2013-04-05 73 views
0

如何使用wsjar文件列出目錄的內容?

下面的代碼是不工作的WebSphere但確實工作的JBoss:

Enumeration<URL> en = getClass().getClassLoader().getResources("com/myjars"); 

while(en.hasMoreElements()) { 

    URL url = en.nextElement(); 

    if(url.toString().startsWith("jar:file:") || url.toString().startsWith("wsjar:file:")) { 

     JarFile jarFile = ((JarURLConnection)url.openConnection()).getJarFile(); 

     Enumeration<JarEntry> eje = jarFile.entries(); 

     while(eje.hasMoreElements()) { 
      JarEntry jarEntry = eje.nextElement(); 

      System.out.println(jarEntry.getName()); 
     } 
    } 
} 

在WebSphere,我得到:

java.lang.ClassCastException:com.ibm.ws.classloader.Handler $ ClassLoaderURLConnection與java.net.JarURLConnection中

不相容
+0

你有沒有檢查,以查看是否有其他的子類? – 2013-04-08 15:48:40

+1

(你不能通過簡單地將對象從一種類型轉換爲另一種類型。) – 2013-04-08 15:49:52

+0

這就是問題所在。我不知道IBM爲什麼要這樣做。 – Corisco 2013-04-24 21:23:46

回答

0

你可能會通過剝離從URL中jar:file:和使用ZipFile type代替,因爲你不是在罐子作爲罐子很感興趣,而是在文件嘗試開放該jar(這只是一個zip文件)。

所以,"jar:file:///foo/bar/baz.jar"成爲"/foo/bar/baz.jar"您傳遞給ZipFile(String) constructor