`

Eclipse+Maven+jetty开发第一个web工程(下篇)

 
阅读更多

下篇主要讲如何用jetty插件在eclipse环境下运行web工程。

一、环境

  windows XP eclipse3.6 apache-maven-3.0.3 + jetty-maven-plugin8.0.0.M3

 

二、步骤:

《Eclipse+Maven+jetty开发第一个web工程(上篇)》中已经介绍了如何创建web工程,接下来讲如下用jetty插件运行此工程。

1、pom.xml设置如下(注意这时选择的是80端口)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zjh.web</groupId>
	<artifactId>com.zjh.web.frontend</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
				<version>2.3.2</version>
			</plugin>
			<plugin>
				<!-- http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin -->
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>8.0.0.M3</version>
				<configuration>
					<stopPort>9966</stopPort>
					<stopKey>foo</stopKey>
					<scanIntervalSeconds>0</scanIntervalSeconds>
					<connectors>
						<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
							<port>80</port>
							<maxIdleTime>60000</maxIdleTime>
						</connector>
					</connectors>
					<webAppConfig>
						<contextPath>/</contextPath>
					</webAppConfig>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<outputFileNameMapping>@{artifactId}@.@{extension}@</outputFileNameMapping>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

 

2、在src\main\webapp下创建WEB-INF目录,在此目录下创建web.xml文件。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 	
</web-app> 

 

3、在src\main\webapp下创建名为test.html文件。内容如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>我是测试代码</h1>
</br>我是第二行。
</body>
</html>

 

4、选中工程,右键选择Run as→Run Configurations….作如下设置。

 

点击运行。url中输入http://127.0.0.1/test.html。可以看到如下的页面。


三、问题及解决

1、之前运行的时候一直提示org.eclipse.jetty.webapp.WebAppContext找不到这个类,相关错误提示如下:

2013-6-15 19:02:44 org.sonatype.guice.bean.reflect.LoadedClass
警告: Error injecting: org.mortbay.jetty.plugin.JettyRunMojo
java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getDeclaredConstructors(Unknown Source)
	at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:243)
	at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:96)
	at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:628)
	at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:835)
	at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:769)
	at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:254)
	at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:205)
	at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:843)
	at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:957)
	at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:990)
	at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:951)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1003)
	at org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:47)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:968)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1014)
	at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:964)
	at com.google.inject.Scopes$1$1.get(Scopes.java:59)
	at org.sonatype.guice.bean.locators.LazyBeanEntry.getValue(LazyBeanEntry.java:79)
	at org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:53)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:243)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:235)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:455)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:92)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.webapp.WebAppContext
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
	... 47 more

     事实上,这个类位于maven库中org\eclipse\jetty\下的jetty-webapp\8.0.0.M3中(注意版本号与jetty-maven-plugin相同)。因此初步判断是jetty-webapp-8.0.0.M3.jar依赖的类找不到。于是把下面的内容加到pom.xml中并进行更新。

 

<dependencies>
	<dependency>
		<groupId>org.mortbay.jetty</groupId>
		<artifactId>jetty-maven-plugin</artifactId>
		<version>8.0.0.M3</version>
	</dependency>
	<dependency>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-resources-plugin</artifactId>
		<version>2.4.3</version>
	</dependency>
</dependencies>

 再运行时即可。

  • 大小: 44.1 KB
  • 大小: 15.8 KB
分享到:
评论
1 楼 tester_lo 2017-08-01  
   可以用,谢谢分享

相关推荐

Global site tag (gtag.js) - Google Analytics