Я хочу получить всю файловую структуру файла jar в виде дерева. Я нахожу много решений. Я использую его как zip-файл. Я по ссылке How to get names of classes inside a jar file?Как получить всю структуру файла как дерево, когда в этом файле jar есть файлы jar.
Код выглядит следующим образом:
public void getClassFromJar(String path) throws IOException {
//ArrayList<String> classNames=new ArrayList<String>();
ZipInputStream zip=new ZipInputStream(new FileInputStream(path));
IntoEntry(zip);
//return classNames;
}
public void IntoEntry(ZipInputStream zip) throws IOException {
for(ZipEntry entry=zip.getNextEntry();entry!=null;entry=zip.getNextEntry()) {
System.out.println("entry: "+entry.getName());
if (entry.getName().endsWith(".jar")) {
// How to do
}
if(entry.getName().endsWith(".class") && !entry.isDirectory()) {
// This ZipEntry represents a class. Now, what class does it represent?
StringBuilder className=new StringBuilder();
for(String part : entry.getName().split("/")) {
if(className.length() != 0) {
className.append(".");
}
className.append(part);
if(part.endsWith(".class")) {
className.setLength(className.length()-".class".length());
}
}
classNames.add(className.toString());
}
}
}
Результат от D:\work\workspace\myjar\org.objectweb.asm_2.2.2.jar(It is not in classpath.)
печати по System.out.println ("запись:" + entry.getName());:
entry: output/
entry: output/dist/
entry: output/dist/lib/
entry: output/dist/lib/asm-2.2.2.jar
entry: output/dist/lib/asm-analysis-2.2.2.jar
entry: output/dist/lib/asm-attrs-2.2.2.jar
entry: output/dist/lib/asm-commons-2.2.2.jar
entry: output/dist/lib/asm-tree-2.2.2.jar
entry: output/dist/lib/asm-util-2.2.2.jar
entry: plugin.xml
Как пройти в банку файлы в этом банке файл?
'jarFile' является' D: \ работа \ рабочее место \ myjar \ org.objectweb.asm_2.2.2.jar'. что такое 'destDir'? –
Можете ли вы дать мне больше комментариев или объяснений о вашем методе? @aviad thanks –
Игнорировать destDir (грязное копирование). Я не тестировал его, но вы можете получить представление о том, как сканировать содержимое jar, рекурсивно повторяя перечисление записей jar, в то время как некоторые записи могут быть самими файлами jar. – aviad