2011-03-15 98 views
0

我需要獲取位於.jar文件中的所有.class文件,該文件又位於另一個.ear文件中。獲取嵌套.jar中的.class文件

我想使用JarInputStream來訪問.ear。這工作正常。但是,當我迭代JarInputStream中的JarEntry元素時,我似乎無法將其作爲Jar文件打開,以讀取其中的任何.class元素。

JarInputStream jarFile = new JarInputStream(new FileInputStream("c:/path/to/my/.ear")); 

JarEntry jarEntry = null; 

while(true) { 

    jarEntry = jarFile.getNextJarEntry(); 

    if(jarEntry == null) { 
     break; 
    } 

    if((jarEntry.getName().endsWith(".jar"))) { 
     //Access to the nested jar? 
    } 
} 

編輯:值得一提的是,上面的代碼與我試圖以編程方式查找的類位於同一個jar中。

+1

我想你應該看看http://stackoverflow.com/questions/1176859/jarfile-from-inside-a-jar-or-inputstream-to-file。 – javanna 2011-03-15 19:57:07

回答

3

您應該首先從.ear文件中提取.jar文件,然後嘗試讀取類文件。

事實上,即使是應用服務器也是如此。他們將EAR文件提取到一個臨時目錄中,然後從那裏加載這些類。

1

你試過這個嗎?

[...]  
    if((jarEntry.getName().endsWith(".jar"))) { 
     JarInputStream subJarStream = new JarInputStream(jarFile); 
     // the same search again 
    }