2014-12-04 32 views
0

試圖jwrapper的一個項目,它不能像這樣:jwrapper扼流圈META-INF目錄

********************************** 
*   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 /服務有什麼特殊之處。許多其他目錄處理沒有錯誤。

更新:

剛剛發現解壓後有一個 '冗長' 的標誌,這表明這一奇怪現象:

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 /服務/。但我不知道爲什麼或如何。

回答

0

這似乎與jwrapper無關。 clojure uberjar工具lein有時會生成一個與pack200不兼容的jar。它只發生在某些上游罐和某些jdk版本(1.7)。

解決方法是解壓縮/重新壓縮修復目錄結構的clojure uberjar。這應該在調用jwrapper之前完成。