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
它運作良好時,我只用一個類文件創建罐子,像下面
[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