我需要获取位于.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中。
答案 0 :(得分:3)
您应首先从.ear文件中提取.jar文件,然后尝试读取类文件。
事实上,这就是应用服务器的功能。他们将EAR文件解压缩到一个临时目录中,然后从那里加载类。
答案 1 :(得分:1)
你试过这个吗?
[...]
if((jarEntry.getName().endsWith(".jar"))) {
JarInputStream subJarStream = new JarInputStream(jarFile);
// the same search again
}