4
jar
コマンドでマルチリリースjar(Java 8とJava 9用)を作成したいと考えています。 いくつかのNetbeans IDEプロジェクトがあります:com.jdojo.mrjar.jdk8、com.jdojo.mrjar.jdk9。 プロジェクトのソースコードはhereです。 コマンドラインを使う私は親フォルダに行き、コマンドを実行します。 私はこれを行うにしようとすると:マルチリリースjarを作成し、入力コンテンツをフィルタリングする方法は?
jar --create --file mrjars/com.jdojo.mrjar.jar
-C com.jdojo.mrjar.jdk8/build/classes .
--release 9 -C com.jdojo.mrjar.jdk9/build/classes .
を私はメッセージが表示されます:
Warning: entry META-INF/versions/9/.netbeans_automatic_build contains a class that
is identical to an entry already in the jar
Warning: entry META-INF/versions/9/.netbeans_update_resources contains a class that
is identical to an entry already in the jar
java.nio.file.NoSuchFileException: java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:384)
at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:288)
at java.base/java.nio.file.Files.move(Files.java:1413)
at jdk.jartool/sun.tools.jar.Main.validateAndClose(Main.java:460)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:343)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1670)
私は、これは開発環境のサービス・ファイルの存在によるものであると思います。それらをフィルタリングする可能性はありますか(特定のファイルタイプのファイルのみをjarでパッケージ化するために選択します)?
Java Platform, Standard Edition Tools Referenceで説明したjar操作。
あなたは 'class'ファイルを' -C'を使う代わりに明示的にリストアップしようとしましたか?そうすれば '.netbeans ... 'フォルダを除外することができます。また、これらは警告のみなので、例外とは無関係かもしれないということも興味深い。そこには何も原因はありませんか? – Nicolai
はい、@ニコライ。 'class'ファイルのリストはフィルタリングの問題を解決しました。私は '$(find -name * .class)'コマンドがこれに便利だと思います。しかし、これには他にも問題があります。ソースコードファイルのリストのどこにルートフォルダがあるかを指定する方法はありません。 –
したがって、ファイルの誤ったパッキングが発生します( 'com.jdojo.mrjar.jdk9.build.classes.com.jdojo.mrjar')。 –