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 不兼容

4

1 回答 1

0

您可以尝试通过从 URL 中剥离jar:file:并使用ZipFile类型来打开,因为您对 jar 作为 jar 并不真正感兴趣,而是对 jar 中的文件(这只是一个 zip 文件)感兴趣。

所以,"jar:file:///foo/bar/baz.jar"变成"/foo/bar/baz.jar"你传递给ZipFile(String)构造函数的

于 2013-04-09T15:27:54.693 回答