我使用maven插件“wagon-maven-plugin”创建一个包含war文件和jar文件的jar。
当我尝试"java -jar myApp.jar"
我收到以下错误
WARN [main] log.warn(50) | Failed startup of context o.e.j.w.WebAppContext{/,null},file:/Users/hrastogi/chatplus_code_new/chatplus_server/feed-monitor/jetty-pkg/target/feedmonitorservice-1.0.0-SNAPSHOT.jar
java.io.FileNotFoundException: /jetty-pkg/target/work/webapp/LICENSE (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at org.eclipse.jetty.util.resource.JarResource.copyTo(JarResource.java:226)
at org.eclipse.jetty.webapp.WebInfConfiguration.unpack(WebInfConfiguration.java:449)
at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure(WebInfConfiguration.java:49)
at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:465)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:495)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93)
at org.eclipse.jetty.server.Server.doStart(Server.java:243)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at bekkopen.jetty.Main.start(Main.java:99)
at bekkopen.jetty.Main.main(Main.java:29)
许可证文件存在于该文件夹中。
任何指针都会有很大的帮助。
由于
答案 0 :(得分:1)
我以前见过这个问题。 确保您的JAR文件不包含具有相同名称但不同大小写的文件。这在JAR文件中有效,但在Windows中展开时则不行。 Jetty抱怨这种欺骗性的错误。
我使用maven-shade-plugin创建了一个大型JAR,其中包含许多库,其中一些库中包含LICENSE文件,而其他库中包含许可证文件夹(Windows不允许这样)。见图像
现在,如果我运行这个jar。 Jetty尝试解压缩windows temp文件夹中的内容,但失败时出现类似于你的错误。
答案 1 :(得分:0)
正如monzonj所说。我在OS X下遇到了同样的问题,它也不区分大小写。解决方法是配置打包maven插件(在我的情况下为shade插件)以跳过该文件。请参阅我的博文Fixed: Embedded Jetty Fails To Unpack With FileNotFoundException: Not a directory来描述它。