当前位置: 首页 > 面试题库 >

Maven-tomcat7-plugin产生损坏的可执行JAR

郭子航
2023-03-14
问题内容

我在使用Maven Tomcat7插件生成带有嵌入式Tomcat7实例的JAR存档时遇到问题。这是我的pom.xml片段:

        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/${project.artifactId}</path>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>exec-war</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我的项目使用war包装。生成了包含带有项目的WAR存档的Tomcat的JAR文件,但是当我尝试运行它时,出现错误:

java.io.FileNotFoundException: /home/rafal.wrzeszcz/workspace/Mailer/.extract/webapps/mailer.war
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:214)
    at java.util.zip.ZipFile.<init>(ZipFile.java:144)
    at java.util.jar.JarFile.<init>(JarFile.java:153)
    at java.util.jar.JarFile.<init>(JarFile.java:90)
    at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
    at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
    at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:88)
    at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
    at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
    at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:113)
    at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:722)
    at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:843)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

我尝试了插件版本2.1-相同的结果。

这是通过执行JAR提取的目录树:

$ ls -AR .extract
.extract:
conf  logs  temp  webapps  work

.extract/conf:

.extract/logs:
access_log.2014-03-07

.extract/temp:

.extract/webapps:

.extract/work:
Tomcat

.extract/work/Tomcat:
localhost

.extract/work/Tomcat/localhost:
mailer

.extract/work/Tomcat/localhost/mailer:

(如您所见,没有文件被复制)


问题答案:

从配置中删除路径。并使用2.1版的tomcat插件。在pom文件中进行这两项更改对我来说解决了一个类似的问题。另外,$M2_REPO/org/apache在重新运行之前,我已经清理了文件夹。



 类似资料:
  • 我通过spring-boot-maven-plugin(V1.3.6)创建完全可执行的jar,方法如下: 当我从目标目录启动类似于可执行文件的结果jar(类似于“./app.jar”,而不是通过“java-jar app.jar”)时,应用程序可以正确地启动和工作,但是如果我将此jar复制到另一个目录,我会得到错误:“无效或损坏的jar文件/home/user/spring”。(我使用Linux

  • 我想用Java编写一个GUI zip/unzip程序。该程序将能够压缩文件和目录/IES的任何组合,并解压缩一个或多个压缩文件。 现在我刚刚完成了GUI和zip Funtion。但是zip funtion似乎不能正常工作,产生的zip文件不知何故被破坏了。我找不到问题到底出在哪里。它似乎与函数或函数有关。 当我测试该程序时,输出如下: 归档:找不到test1.zip中央目录结束签名。要么这个文件不

  • 知道如何在变化时重新部署html和jsp吗?

  • 我正在尝试用Maven安装UIMA JDK。然而,总有一个警告 请帮助我解决此问题

  • 问题内容: 我有一个Maven项目,我想从中创建两个可执行的jar文件。一个将与用户交互使用,第二个将作为计划作业运行,读取前者生成的日志文件。最后,除了MANIFEST.MF文件中的Main- Class属性外,我希望两个jar文件都相同。 我正在使用maven-antrun- plugin创建一个可执行jar,在我尝试通过引入Maven配置文件尝试创建第二个jar文件之前,这似乎工作得很好。我

  • Windows Server 2008 R2,64 Apache Maven 2.2.1 Java版本:1.6.0\u 26 Java\u主页:C:\Program Files\Java\jdk1.6.0\u 26 Tomcat 7.0使用Java 1.6编译项目 我正在尝试使用tomcat7 maven插件来运行一个使用tomcat7:run目标的tomcat开发服务器。当我尝试点击索引时。服务