我有一個包含以下內容的jar文件:的Java類加載器沒有找到預期的資源
LibJar Contents
dir1
|dir1-1
| |Class1-1-1
| |LClass1-1-2
|Ldir1-2
|LClass1-2-1
Ldir2
|LClass2-1
我的Java程序(我們可以把它叫做ProgJar,但我在NetBeans IDE還運行)具有以下封裝結構:
ProgJar
dir1
|dir1-1
| |Class-1-1
| |PClass1-1-2 Different file name from LibJar
Pdir2
|PClass2-1
ProgJar和LibJar之間唯一的共享包結構是「dir1/dir1-1/Class1-1-1」。其他所有以P開頭的前綴都是ProgJar所獨有的,所有以L開頭的前綴都是LibJar所獨有的。
我使用LibJar作爲ProgJar中的庫。
這是我在ProjJar運行的代碼片段:
ClassLoader clP = Pdir2.PClass2-1.class.getClassLoader();
ClassLoader clL = Ldir2.LClass2-1.class.getClassLoader();
URL u1 = clP.getResource("dir1/dir1-1");
URL u2 = clL.getResource("dir1/dir1-1");
System.out.printf(u1.toExternalForm());
System.out.printf(u2.toExternalForm());
當我運行這個Netbeans中我得到以下輸出:
Netbeans Output:
jar:file:/C:/path/to/project/lib/LibJar.jar!/dir1/dir1-1
jar:file:/C:/path/to/project/lib/LibJar.jar!/dir1/dir1-1
當我作爲一個ProgJar運行作爲建罐子NetBeans外部,我得到:
Jar Output:
jar:file:/C:/path/to/ProgJar/ProgJar.jar!/dir1/dir1-1
jar:file:/C:/path/to/ProgJar/ProgJar.jar!/dir1/dir1-1
我希望看到的是如下:
Netbeans Output:
jar:file:/C:/path/to/project/build/classes/dir1/dir1-1
jar:file:/C:/path/to/project/lib/LibJar.jar!/dir1/dir1-1
Jar Output:
jar:file:/C:/path/to/ProgJar/ProgJar.jar!/dir1/dir1-1
jar:file:/C:/path/to/ProgJar/libs/LibJar.jar!/dir1/dir1-1
我經歷了幾個不同的文章閱讀,但是這一次似乎有點相關與這個特定問題:
http://jeewanthad.blogspot.com/2014/02/how-to-solve-java-classpath-hell-with.html
我如何能實現我的指定的輸出?
我會試試這個報告。 – MrJman006
您的問題有何進展? – code
我還沒有嘗試過。本週我會盡力去解決它。 – MrJman006