`

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  
   可以用,谢谢分享

相关推荐

    eclipse中配置使用jetty调试web项目

    在Eclipse中配置Jetty的第一步是安装Jetty插件。你可以通过Eclipse的内置软件更新站点或Marketplace来搜索并安装Jetty插件,例如“Jetty RunWar”或“Jetty Integration”。安装完成后,重启Eclipse。 2. **创建或...

    maven-tomcat7集成

    在Java Web开发中,Maven和Tomcat的集成是一个常见的需求,这有助于简化构建和部署流程。本篇文章将详细介绍如何将Maven与Tomcat7进行集成,以便在Eclipse环境中进行开发和调试。 首先,Maven是Apache软件基金会的...

    web开发常用jar包

    在IT行业中,尤其是在Java Web开发领域,`jar`(Java Archive)包是不可或缺的一部分。`jar`文件是一种特殊格式的归档文件,它包含了多个Java类文件、资源文件以及元数据,便于代码的分发、部署和运行。本篇文章将...

    JavaWeb开发工具说明.pdf

    新建一个Web项目是开始开发的第一步。在STS中,可以通过"File" -&gt; "New" -&gt; "Dynamic Web Project"来创建。在向导中,设定项目名称、目标运行环境(对应已配置的服务器)、Web应用版本等参数。完成这些设置后,STS会...

    后台管理系统

    大家回想我们开发的时候搭建项目工程的时候,配置pom,各种拷贝。每次都这样是不是很麻烦。那么我们能不能整理一个基础项目基础模板出来,就这样adminstore诞生了。adminstore整合了spring,hibernate,shiro,...

    Struts2学习笔记(一) 环境的搭建与HelloWorld程序

    在本篇学习笔记中,我们将聚焦于环境搭建和创建第一个"Hello, World!"程序。 首先,要开始学习Struts2,你需要确保你的开发环境中已经安装了以下基本组件: 1. **Java Development Kit (JDK)**:Struts2依赖于Java...

    spring boot入门ppt和代码

    3. **创建第一个Spring Boot应用**:使用Spring Initializr创建项目,选择起步依赖,编写主类,启动应用。 4. **Web开发**:讲解如何使用Spring Boot开发RESTful API,包括控制器、模型、视图解析等。 5. **数据...

    SpringBoot基础视频

    2. **内嵌Servlet容器**:可以直接打包成JAR文件,并且内置Tomcat、Jetty或Undertow作为Web服务器。 3. **简化Maven配置**:通过依赖管理来简化项目构建配置。 4. **自动配置**:Spring Boot尽可能地自动配置Spring...

    个人总结框架

    【个人总结框架】这篇内容主要概述了一个基于Java的现代金融行业框架,特别强调了它在第三方支付场景中的应用,如支付宝。以下是对该框架的详细解释: 1. **框架结构**: - **Common-dal**:使用MyBatis实现,负责...

    Java 实时社区论坛.zip

    init.properties 中的管理员账号使用 mvn install 进行构建部署到 Servlet 容器的 ROOT 下并启动容器,数据库表会在第一次启动时自动建立注意:没有数据库建表 SQL 脚本,只需要手动建库,表会在第一次启动时自动...

    Spring-Boot:Spring Boot框架的学习

    3. **Hello World**:编写第一个Spring Boot应用,了解基本结构。 4. **自动配置**:理解自动配置的工作原理,查看`@EnableAutoConfiguration`注解。 5. **Web开发**:学习如何构建RESTful API,使用模板引擎创建...

Global site tag (gtag.js) - Google Analytics