プロジェクトで 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/services の何が特別なのかわかりません。他の多くのディレクトリはエラーなしで処理されます。
アップデート:
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/ を除くすべてのディレクトリは「保存済み」とマークされています。ただし、理由や方法はわかりません。