ここで、java9 / com / vipin / exp / A.classは、jdk9および他のバージョンのjava8 / com / vipin / exp /A.classで使用したいファイルです。このために、マルチリリースjarを作成しようとしていますが、エラーが発生します。このコマンドの何が問題になっていますか?
[email protected]:~/javacode$ pwd
/Users/XXXX/javacode
XXXX@XXX-Air:~/javacode$ javac --release 9 -d /Users/nitinkumarsharma/javacode/java9/ java9/com/vipin/exp/A.java
XXXX@XXX-Air:~/javacode$ javac --release 8 -d /Users/nitinkumarsharma/javacode/java8/ java8/com/vipin/exp/A.java
XXXX@XXX-Air:~/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
-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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加