我需要获取 .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/