マルチリリースjarの作成中にエラーが発生しました "エントリ:A.class、内部名com.vipin.exp.Aのクラスが含まれています、名前が一致しません"

Vipin

ここで、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
Vipin

-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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ