2017-10-18 12 views
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 
+0

私はあなたが 'jar -c -f vipin.jar -C java8を探していると思います。 --release 9 -C java9 .' - クラスファイルは、バージョン管理されたセクションの最上位ディレクトリまたは最上位ディレクトリにコピーされます。 –

+0

@AlanBatemanコマンドを実行した後、「ファイルの引数を解析中にエラーが発生しました。詳細は 'jar --help 'を試してください。 – Vipin

+0

@AlanBateman私は間違ったコマンドを以前にどのようにコピーしたのか分かりませんが、現在利用可能なコマンドは今私のために働いていました。 -Cオプションの私の理解は間違っていた。 – Vipin

答えて

0

以下のように-Cオプションの私の理解が間違っていました私は-Cの後に最上位のディレクトリを置いていたはずです。

[email protected]:~/javacode$ jar -c -f vipin.jar -C java8 . --release 9 -C java9 . 
Warning: entry META-INF/versions/9/com/vipin/exp/A.java, multiple resources with same name 
[email protected]:~/javacode$ jar -tvf vipin.jar 
    0 Wed Oct 18 19:06:26 IST 2017 META-INF/ 
    82 Wed Oct 18 19:06:26 IST 2017 META-INF/MANIFEST.MF 
    0 Tue Oct 17 18:02:04 IST 2017 com/ 
    0 Tue Oct 17 18:02:04 IST 2017 com/vipin/ 
    0 Tue Oct 17 23:26:56 IST 2017 com/vipin/exp/ 
    430 Wed Oct 18 19:00:38 IST 2017 com/vipin/exp/A.class 
    136 Tue Oct 17 22:49:20 IST 2017 com/vipin/exp/A.java 
    0 Tue Oct 17 20:00:34 IST 2017 META-INF/versions/9/ 
    0 Tue Oct 17 20:00:34 IST 2017 META-INF/versions/9/com/ 
    0 Tue Oct 17 20:00:34 IST 2017 META-INF/versions/9/com/vipin/ 
    0 Tue Oct 17 23:27:04 IST 2017 META-INF/versions/9/com/vipin/exp/ 
    430 Wed Oct 18 19:02:04 IST 2017 META-INF/versions/9/com/vipin/exp/A.class 
    135 Tue Oct 17 22:49:26 IST 2017 META-INF/versions/9/com/vipin/exp/A.java 

コマンドが生成間違っ出力上記の質問に与えられた仕事を、正しいものは以下になりますと、あなたはTVF出力にクラスファイルを参照することができ、正しい構造で利用されているCOM/vipin/EXP/A.class

[email protected]:~/javacode$ jar -c -f vipin_test.jar -C java8 . 
[email protected]:~/javacode$ jar -tvf vipin_test.jar 
    0 Wed Oct 18 19:20:18 IST 2017 META-INF/ 
    61 Wed Oct 18 19:20:18 IST 2017 META-INF/MANIFEST.MF 
    0 Tue Oct 17 18:02:04 IST 2017 com/ 
    0 Tue Oct 17 18:02:04 IST 2017 com/vipin/ 
    0 Tue Oct 17 23:26:56 IST 2017 com/vipin/exp/ 
    430 Wed Oct 18 19:00:38 IST 2017 com/vipin/exp/A.class 
    136 Tue Oct 17 22:49:20 IST 2017 com/vipin/exp/A.java 

それを示すいくつかのコマンドが完全に機能しました。

[email protected]:~/javacode$ java -version 
java version "9" 
Java(TM) SE Runtime Environment (build 9+181) 
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) 
[email protected]:~/javacode$ java -cp vipin.jar com.vipin.exp.A 
Inside java9 version 
[email protected]:~/javacode$ /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin/java -version 
java version "1.8.0_111" 
[email protected]:~/javacode$ /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin/java -cp vipin.jar com.vipin.exp.A 
Inside java8 version 
関連する問題