jar 패키지 org.reflections를 추천합니다. github 주소: https://github.com/ronmamo/reflections Stackoverflow에 대한 비슷한 질문: http://stackoverflow.com/ 질문/520328/can-you-find-all-classes-in-a-package-using-reflection
반사 Reflections = new Reflections("my.project.prefix");
Set<Class<? 확장 Object>> allClasses = Reflections.getSubTypesOf(Object.class);
예제는 클래스 수준만을 보여주고 있으며, 통계적 방법에 대한 코드는 추후 추가될 예정입니다.
업데이트: 위 코드의 테스트를 통과하지 못했습니다. 죄송합니다! 나는 다른 방법을 시도했습니다. http://stackoverflow.com/questions/15720822/how-to-get-names-of-classes-inside-a-jar-file jar 패키지를 직접 읽으십시오. Java 정규화된 클래스 이름을 연결합니다. 1. 대상 jar를 Java 프로젝트에 도입합니다. 2. 기본 메소드를 실행합니다.
private static List<String> getClassNames(String jarPath)가 IOException을 발생시킵니다.
List classNames = new ArrayList();
ZipInputStream zip = new ZipInputStream(new FileInputStream(jarPath));
for (ZipEntry 항목 = zip.getNextEntry(); 항목 != null; 항목 = zip.getNextEntry()) {
if (!entry.isDirectory() && Entry.getName().endsWith(".class")) {
// 이 ZipEntry는 클래스를 나타냅니다. 이제 어떤 클래스를 나타냅니까?
String className = Entry.getName().replace('/', '.') // ".class" 포함
classNames.add(className.substring(0, className.length() - ".class".length()));
}
}
클래스 이름을 반환합니다.
}
jar의 경로를 얻기 위해 http://blog.csdn.net/mybackup/article/details/7401704 문서를 참조했습니다. 여기에는 전제가 있는데, jar의 클래스를 알아야 한다는 것입니다. 유사한 기본 메소드 코드:
public static void main(String[] args)에서 ClassNotFoundException, IOException이 발생합니다.
DB db = new DB() //jar 패키지의 클래스
문자열 jarPath = db.getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
정수 개수 = 0;
목록 이름 = getClassNames(jarPath);
for (문자열 이름 : 이름) {
System.out.println(이름);
클래스> clazz = Class.forName(이름);
Method[] 메소드 = clazz.getDeclaredMethods();
for(방법 m : 방법) {
System.out.println(m.getName()); //여기에 문제가 있을 수 있습니다.
카운트++;
}
}
System.out.println("전체 개수: " + 개수);
}
jar 패키지
org.reflections
를 추천합니다. github 주소: https://github.com/ronmamo/reflectionsStackoverflow에 대한 비슷한 질문: http://stackoverflow.com/ 질문/520328/can-you-find-all-classes-in-a-package-using-reflection
예제는 클래스 수준만을 보여주고 있으며, 통계적 방법에 대한 코드는 추후 추가될 예정입니다.
업데이트:
위 코드의 테스트를 통과하지 못했습니다. 죄송합니다! 나는 다른 방법을 시도했습니다. http://stackoverflow.com/questions/15720822/how-to-get-names-of-classes-inside-a-jar-file
jar 패키지를 직접 읽으십시오. Java 정규화된 클래스 이름을 연결합니다.
1. 대상 jar를 Java 프로젝트에 도입합니다.
2. 기본 메소드를 실행합니다.
jar의 경로를 얻기 위해 http://blog.csdn.net/mybackup/article/details/7401704 문서를 참조했습니다.
여기에는 전제가 있는데, jar의 클래스를 알아야 한다는 것입니다.
유사한 기본 메소드 코드: