У меня есть Jar в java, который содержит 2 класса и 1 интерфейс. Как я могу получить интерфейс и имена классов из банки. В настоящее время я могу получить имена классов, но не имя интерфейса.Как напечатать имя класса и интерфейса из файла java jar
List jClasses = getClasseNames("D://Test.jar");
System.out.println(jClasses.size());
for (int i = 0; i < jClasses.size(); i++) {
System.out.println("Print Classes ::" + jClasses.get(i));
if((null != jClasses.getClass().getInterfaces()[i])) {
System.out.println(jClasses.getClass().getInterfaces()[i]);
} else {
System.out.println("No connection");
}
}
public static List getClasseNames(String jarName) {
ArrayList classes = new ArrayList();
try {
JarInputStream jarFile = new JarInputStream(new FileInputStream(
jarName));
JarEntry jarEntry;
while (true) {
jarEntry = jarFile.getNextJarEntry();
if (jarEntry == null) {
break;
}
if (jarEntry.getName().endsWith(".class")) {
classes.add(jarEntry.getName().replaceAll("/", "\\."));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return classes;
}
выход:
Print Classes ::com.java.testclient.PTest1.class
interface java.util.List
======
Print Classes ::com.java.testclient.ClassSpy.class
interface java.util.RandomAccess
======
Print Classes ::com.java.testclient.myInt.class
interface java.lang.Cloneable
======
Print Classes ::com.java.testclient.PTest.class
interface java.io.Serializable
Просьба предложить.
Что такое 'getClasseNames' и это' jClasses.getClass() getInterfaces() [я. ] 'является подозрительным,' jClasses.get (i) .getClass(). getInterfaces() 'возможно –
' getClasseNames' фактически включен в опубликованный код. – lexicore
@lexicore не было [до] (http://stackoverflow.com/posts/41334032/timeline): p –