簡體   English   中英

maven-tomcat7-plugin生成損壞的可執行JAR

[英]maven-tomcat7-plugin produces corrupted executable JAR

我使用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:

(你可以看到沒有復制的文件)

這確實是tomcat7 maven插件2.2版中的一個錯誤: https ://issues.apache.org/jira/browse/MTOMCAT-263

使用2.1版或等待2.3發布。

從配置中刪除路徑。 並使用2.1版本的tomcat插件。 在我的pom文件中進行這兩項更改為我修復了類似的問題。 $M2_REPO/org/apache重新運行之前清理了$M2_REPO/org/apache文件夾。

當我使用上一個java -jar xx-war.jar創建的舊目錄.extract/ ,就可以了。 我使用2.0版本,我認為其他版本也可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM