繁体   English   中英

META-INF目录上的jwrapper阻塞

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM