[英]jwrapper chokes on META-INF directory
在项目上尝试jwrapper时,失败如下:
**********************************
* BUILD FAILED *
**********************************
** Reason: (see stacktrace below)
java.lang.IllegalArgumentException: Non-empty directory: META-INF/services
at com.sun.java.util.jar.pack.PackerImpl$DoPack.readFile(PackerImpl.java:546)
at com.sun.java.util.jar.pack.PackerImpl$DoPack.run(PackerImpl.java:492)
at com.sun.java.util.jar.pack.PackerImpl.pack(PackerImpl.java:99)
at jwrapper.pack200.Pack200Compressor.compressFileToOutputStream(Pack200Compressor.java:133)
at jwrapper.archive.Archive.addFileToStream(Archive.java:411)
应用程序jar具有以下功能:
1 12-03-2014 16:45 META-INF/services/
13 12-03-2014 16:45 META-INF/services/java.sql.Driver
可能是什么问题?
如果独立运行pack200,则会引发相同的错误。 我不知道META-INF /服务有什么特别之处。 处理许多其他目录也没有错误。
更新:
刚发现unzip有一个“ verbose”标志,它揭示了这种怪异:
0 Stored 0 0% 02-22-2013 13:53 00000000 META-INF/maven/net.mikera/mathz/
1 Defl:N 3 -200% 12-03-2014 16:45 32d70693 META-INF/services/
除META-INF / services /外,所有目录都标记为“已存储”。 但是我不知道为什么或如何。
这似乎与jwrapper无关。 clojure uberjar工具lein有时会构建一个与pack200不兼容的jar。 它仅在某些上游jar和某些jdk版本(1.7)中发生。
一种解决方法是将Clojure uberjar解压缩/重新压缩,从而修复目录结构。 这应该在调用jwrapper之前完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.