Ich habe eine Jar-Datei mit dem Namen " OuterJar.jar ", das ein anderes jar mit dem Namen " InnerJar.jar "Dieses InnerJar enthält 2 Dateien namens " Test1.class " & " Test2.class "Jetzt möchte ich diese beiden Dateien extrahieren. Ich habe einige Codes ausprobiert, aber es funktioniert nicht.
class NestedJarExtractFactory{
public void nestedJarExtractor(String path){
JarFile jarFile = new JarFile(path);
Enumeration entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry _entryName = (JarEntry) entries.nextElement();
if(temp_FileName.endsWith(".jar")){
JarInputStream innerJarFileInputStream=new JarInputStream(jarFile.getInputStream(jarFile.getEntry(temp_FileName)));
System.out.println("Name of InnerJar Class Files::"+innerJarFileInputStream.getNextEntry());
JarEntry innerJarEntryFileName=innerJarFileInputStream.getNextJarEntry();
///////////Now hear I need some way to get the Input stream of this class file.After getting inputStream i just get that class obj through
JavaClass clazz = new ClassParser(InputStreamOfFile,"" ).parse();
}
///// I use the syntax
JavaClass clazz = new ClassParser(jarFile.getInputStream(innerJarEntryFileName),"" ).parse();
Aber das Problem ist, dass die "jarFile" obj die obj der OuterJar-Datei ist, so dass beim Versuch, die inputStream einer Datei, die in der InnerJar existiert nicht möglich ist.