1

maven-assembly-plugin を使用して、より大きな zip アセンブリ (非圧縮で 3 GB 以上) を作成する際に問題が発生しています。この問題は、出力 zip ファイル (1 GB 未満に圧縮) をビルドするときに発生します。オプションを指定して maven を実行すると-e、より詳細な情報が得られます。

[INFO] Building zip: xxx/HG19-UCSC-dist.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:40.199s
[INFO] Finished at: Wed Oct 02 11:08:44 BST 2013
[INFO] Final Memory: 13M/723M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (make-assembly) on project HG19: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size -> [Help 1]
...
...
...
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
Caused by: java.lang.IllegalArgumentException: invalid entry size
    at java.util.zip.ZipEntry.setSize(ZipEntry.java:135)
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.finish(ZipOutputStream.java:316)

調べてみると、この問題は、2011 年に OpenJDK に追加されたJDK/JRE ( https://blogs.oracle.com/xuemingshen/entry/zip64_support_for_4g_zipfile ) で Zip64 のサポートが欠落していることが原因であることがわかりました。

ただし、JDK を Oracle が提供する最新のものに更新しました。

$ mvn -version
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 03:15:32+0100)
Maven home: /usr/local/apache-maven-3.1.0
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: /usr/local/java/jdk1.7.0_40/jre
Default locale: en_GB, platform encoding: ISO-8859-1
OS name: "linux", version: "2.6.32-279.2.1.el6.x86_64", arch: "amd64", family: "unix"

そして、同じ問題が再び報告されます。最新の Oracle JDK は Zip64 をサポートしていませんか、それとも別のものですか?

ソースから OpenJDK b147 をビルドしてみることができると思いますが、やむを得ない場合を除き、それは避けたいと思います。

4

4 に答える 4

6

犯人を見つけたので、他の人の時間を節約するために問題を報告しました。

org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)私の例外スタック トレースで報告されているように、問題が発生しているようです。ソースを見ると、次のorg.codehaus...ZipOutputStream.closeEntryことがわかります。

entry.setSize( def.getTotalIn() );

そしてそれdefjava.util.zip.Deflaterです。ただしDeflater.getTotalIn返品int不可long。代わりDeflater.getBytesRead()に、開発者に報告するコードを使用する必要があります。

[編集] しばらく経ちましたが、これを読んでいる人がいるので参考まで2.5に、maven アセンブリ プラグインのバージョン以降、問題は修正されています。

于 2013-10-02T18:15:10.990 に答える
1

同じ問題が発生しました。プロジェクトの jar をビルドするときに非常に大きな (3GB) ログ ファイルが取得されることがあり、これが問題の原因でした。ファイルが削除された後、エラーは発生せず、ターゲット jar のサイズは 10Mb 未満に戻りました。

于 2014-02-05T20:21:15.180 に答える
0

ここ (ZipEntry クラス)でわかるように、これは JDK 1.7 で修正されています。

mvnコマンドラインから実行すると、JDK バージョン 1.7が表示されることがわかりました。

同じ方法でビルドを完了しようとしていますか、つまりコマンドラインからです (Maven に別の JDK を使用できる IDE ではありませんか?)

于 2013-10-02T12:09:54.003 に答える