0
java9/com/vipin/exp/A.classはファイルI jdk 9と他のバージョンのjava8/com/vipin/exp/A.classに使用したいと考えています。このため、私はマルチリリースjarを作成しようとしていますが、エラーを下回っています。このコマンドの何が間違っていますか?マルチリリースjarを作成中にエラーが発生しました。 "エントリ:A.class、内部名がcom.vipin.exp.Aのクラスが含まれていて、名前が一致しません"
[email protected]:~/javacode$ pwd
/Users/XXXX/javacode
[email protected]:~/javacode$ javac --release 9 -d /Users/nitinkumarsharma/javacode/java9/ java9/com/vipin/exp/A.java
[email protected]:~/javacode$ javac --release 8 -d /Users/nitinkumarsharma/javacode/java8/ java8/com/vipin/exp/A.java
[email protected]:~/javacode$ jar -c -f vipin.jar -C java8/com/vipin/exp/ . --release 9 -C java9/com/vipin/exp/ .
entry: A.class, contains a class with internal name com.vipin.exp.A, names do not match
entry: META-INF/versions/9/A.class, contains a new public class not found in base entries
Warning: entry META-INF/versions/9/A.java, multiple resources with same name
invalid multi-release jar file vipin.jar deleted
私のディレクトリ構造は次のとおりです。
[email protected]:~/javacode$ tree
.
|____java8
| |____com
| | |____vipin
| | | |____exp
| | | | |____A.class
| | | | |____A.java
|____java9
| |____com
| | |____vipin
| | | |____exp
| | | | |____A.class
| | | | |____A.java
私はjarファイルを作成するだけで1つのクラスファイルを使用する場合にはうまく機能し、
[email protected]:~/javacode$ jar -c -f vipin.jar -C java8/com/vipin/exp/ .
[email protected]:~/javacode$ ls -ltr
total 12688
drwxr-xr-x 3 XXXX staff 102 Oct 17 18:02 java8
drwxr-xr-x 3 XXXX staff 102 Oct 17 20:00 java9
-rw-r--r-- 1 XXXX staff 968 Oct 18 17:05 vipin.jar
[email protected]:~/javacode$ jar -tvf vipin.jar
0 Wed Oct 18 17:05:08 IST 2017 META-INF/
61 Wed Oct 18 17:05:08 IST 2017 META-INF/MANIFEST.MF
430 Tue Oct 17 22:55:22 IST 2017 A.class
136 Tue Oct 17 22:49:20 IST 2017 A.java
私はあなたが 'jar -c -f vipin.jar -C java8を探していると思います。 --release 9 -C java9 .' - クラスファイルは、バージョン管理されたセクションの最上位ディレクトリまたは最上位ディレクトリにコピーされます。 –
@AlanBatemanコマンドを実行した後、「ファイルの引数を解析中にエラーが発生しました。詳細は 'jar --help 'を試してください。 – Vipin
@AlanBateman私は間違ったコマンドを以前にどのようにコピーしたのか分かりませんが、現在利用可能なコマンドは今私のために働いていました。 -Cオプションの私の理解は間違っていた。 – Vipin