java - 获取嵌套 .jar 中的 .class 文件

标签 java jar ear

我需要获取 .jar 文件中的所有 .class 文件,而该文件又位于另一个 .ear 文件中。

我正在尝试使用 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 中。

最佳答案

您应该首先从 .ear 文件中提取 .jar 文件,然后尝试读取类文件。

事实上,甚至应用程序服务器也是这样做的。他们将 EAR 文件提取到临时目录中,然后从那里加载类。

关于java - 获取嵌套 .jar 中的 .class 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317151/

相关文章:

java - Java 的 foreach 循环是否保持顺序?

java - 如何在 java 中将字符串转换为 URL?

java - 如何替换字符串中两个子字符串中的文本?

java - Maven 程序集插件 NoClassDefFoundError

maven - 由于处理结构时出现故障,无法在 WildFly 8 上部署 Ear

java - NoSuchMethodError TabLayout.OnTabSelectedListener

eclipse - 如何使用Eclipse插件tarlog.eclipse.plugins_1.4.2.jar

java - 将 Proguard 与可运行的 JAR 文件结合使用

java - 当打包到 EAR 中时,Jar 中的实用程序类找不到 EJB

java - 如何使用maven将目录中的所有jar包含到ear中?