内嵌jetty可执行war包问题求助

问题描述

内嵌jetty可执行war包问题求助

最近写了一个简单的应用,其中需要几个页面,所以使用了jsp+springMVC,服务器使用了jetty,内嵌的方式,
写了一个Java类启动,在eclipse中开发测试的时候没有问题,只要运行启动类,jetty就启动了,可以访问页面。但是,
当开发完成,我想打成一个可执行的war包,使用java -jar XXX.war命令运行的时候,在启动时报如下错误:

C:workspaceCCERTooltarget>java -Xms512m -Xmx512m -XX:MaxPermSize=96m -jar CCE
RTool-0.0.1.war&
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=96m; support was removed in 8.0
2016-05-20 09:46:22.235:INFO::main: Logging initialized @245ms
war file path:file:/C:/workspace/CCERTool/target/CCERTool-0.0.1.war
2016-05-20 09:46:22.296:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT
2016-05-20 09:46:27.905:WARN:oejw.WebAppContext:main: Failed startup of context
o.e.j.w.WebAppContext@50cbc42f{/,file:/C:/workspace/CCERTool/target/CCERTool-0.0
.1/,STARTING}{file:/C:/workspace/CCERTool/target/CCERTool-0.0.1.war}
……..
        at org.eclipse.jetty.server.Server.doStart(Server.java:354)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLife
Cycle.java:68)
        at com.thomsonreuters.ccertool.Launcher.startJetty(Launcher.java:83)
        at com.thomsonreuters.ccertool.Launcher.main(Launcher.java:94)
Caused by:
java.lang.NoClassDefFoundError: org/apache/jasper/servlet/JspServlet
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoade

我的打包过程如下:

1.pom.xml中相关依赖

    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>9.2.13.v20150730</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
        <version>9.2.13.v20150730</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>jetty-jsp</artifactId>
     <version>9.2.13.v20150730</version>
     <scope>provided</scope>
   </dependency>
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.23</version>
    </dependency>

     <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.6.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.6.0</version>
    </dependency>

        <!-- 使用jstp -->
     <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>jstl</artifactId>
         <version>1.2</version>
         <scope>provided</scope>
      </dependency>
  1. pom.xml中打包相关配置
 <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-war-plugin</artifactId>
              <version>2.3</version>
              <configuration>
                <archive>
                  <manifest>
                    <mainClass>com.thomsonreuters.ccertool.Launcher</mainClass>
                    <!-- <addClasspath>true</addClasspath> -->
                  </manifest>
                </archive>
              </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                  <execution>
                    <id>main-class-placement</id>
                    <phase>prepare-package</phase>
                    <configuration>
                      <target>
                        <move todir="${project.build.directory}/${project.artifactId}-${project.version}/">
                          <fileset dir="${project.build.directory}/classes/">
                            <include name="**/*/Launcher.class" />
                          </fileset>
                        </move>
                      </target>
                    </configuration>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.5.1</version>
                <executions>
                  <execution>
                    <id>jetty-classpath</id>
                    <phase>prepare-package</phase>
                    <goals>
                      <goal>unpack-dependencies</goal>
                    </goals>
                    <configuration>
                      <includeGroupIds>org.eclipse.jetty,javax.servlet</includeGroupIds>
                      <excludes>META-INF/ECLIPSEF.SF,META-INF/ECLIPSEF.RSA,META-INF/eclipse.inf</excludes>
                      <outputDirectory>
                        ${project.build.directory}/${project.artifactId}-${project.version}
                      </outputDirectory>
                    </configuration>
                  </execution>
                </executions>
            </plugin>
            <!-- to support compilation in linux -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                  <target>1.7</target>
                  <source>1.7</source>
                  <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

3.war包的结构

其中,com下面是我的启动类Launcher.class, org下面和javax下面应该是jetty依赖的相关包,我看了下面确实没有org/apache/jasper/servlet/JspServlet, 那么要怎样才能打包的时候打到war包的根目录下呢?如果是jetty的依赖应该在maven-dependency-plugin这个阶段打到war里面吧?

求有经验的同学指点,万分感谢!

时间: 2024-10-26 07:44:13

内嵌jetty可执行war包问题求助的相关文章

局域网-如何防止war包内的代码泄漏

问题描述 如何防止war包内的代码泄漏 javaweb项目打包成war放在linux下tomcat里,只连接局域网,不连接外网. 服务器是客户的,怎么防止客户或者其他人通过简单的解压反编译就得到我的源代码? 解决方案 混淆代码...... 解决方案二: 有war包的话,,肯定就能看了 解决方案三: ProGuard 这种代码混淆处理

重磅出击 实现IOS下内嵌HTML编辑器 Objective-C 与 JavaScript 通信攻关

通过接近N天的努力. 终于在今天.IOS下内嵌HTML编辑器的Demo 基本实现. 学习过程中,参考了很多网上的资料.很感谢这些分享资源的牛人.有你们.. 才能顺利拿下这个比较特别的需求. 我使用的HTML编辑器是金山开源的 KindEditor         利用UIWebView 加载 KindEditor (也就是我说的内嵌). 实现IOS下用户可以进行富文本编辑. 主要目的是保证服务端的内容值不丢失.亦可在移动端对内容进行一些简单的修改. 途中难点在于,如何与 KindEditor 的

在TOMCAT上手工生成及部署WAR包

以前是用ECLIPSE或是其它IDE自动生成,不明了. 这次手写JAVA,先生成CALSS来部署, 之后用WAR包来部署.(查了资料,好像直接用JAR来部署TOMCAT的WEB项目,不得行) 就上次生成的First目录下,生成WAR包.命令: jar cvf First.war *.*/ . 然后,这个生成的war包放到webapps目录下,就会自动解压及生成相应的目录文件了. 顺一下tomcat下work目录的作用: 最近发现,很多网友喜欢把tomcat的work目录里的东西叫做缓存,其实那不

Makefile所有内嵌函数

一.文本处理函数以下是GNU make内嵌的文本(字符串)处理函数.1       $(subst FROM,TO,TEXT) 函数名称:字符串替换函数-subst. 函数功能:把字串"TEXT"中的"FROM"字符替换为"TO". 返回值:替换后的新字符串. 示例: $(subst ee,EE,feet on the street) 替换"feet on the street"中的"ee"为"E

【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

 接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于编译jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<

PHP 5.3.7发布 HTML内嵌式的语言

PHPhttp://www.aliyun.com/zixun/aggregation/7434.html">开发团队向大家宣布即将提供PHP 5.3.7的版本.此版本侧重于提高超过90个bug修复,其中一些是与安全相关的PHP5.3.x分支将更稳定. 安全性增强,在PHP 5.3.7修复: Updated crypt_blowfish to 1.2. (CVE-2011-2483) Fixed crash in error_log(). Reported by Mateusz Kociel

ASP中ActiveX控件的内嵌及调用

active|activex|控件|activex|控件 懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,ActiveX技术是微软在Internet上除了IE外的另一个新举措,可以说该技术渗透在它的整个Internet策略中.ActiveX是一个功能强大的部件,可以用VB.C或C++等语言进行编写,因为是编译性执行,故速度比较快. 在ASP(Act

Java项目打war包的方法

最近好忙好忙,整理下心情给大家分享下自己在工作中遇到的一点小技巧,希望给遇到同样麻烦的同学一点帮助. 我们知道Java项目打war包可以在Eclipse和MyEclipse工具中自动打包,就是右键,然后导出war包就可以了,可是我发现我的一个项目打war包的过程中遇到点小麻烦,导出的war包打开之后,里面少了很多东西,明显有问题.那怎么办呢,网上搜了许多偏方都没效果,请教同事,大家也没遇到过这种状况. 除了这种方法,我们可以运用DOS命令来手工打war包: 首先,打开DOS命令行,敲入"jar&

Linux下打包压缩war、解压war包和jar命令

环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 问题 Linux下打包压缩war.解压war包和jar命令 解决 把project_a文件夹下的文件打包成project.war 1.打包 jar - xvf project.war /project_a -c   创建war包 -v   显示过程信息 -f   指 定 JAR文件名,通常这个参数是必须的 -M  不产生所有项的清单 (MANIFEST]文件,此参数会忽略 -m参数 -