폴더 또는 JAR에서 런타임 시 클래스 검색
Java 애플리케이션의 구조를 자세히 살펴보고 의미 있는 통찰력을 추출하는 Java 도구를 구상하세요. 이를 달성하려면 도구는 지정된 소스(JAR/WAR 또는 폴더)에서 .class 파일을 검사해야 합니다. 그런 다음 리플렉션을 사용하여 클래스 메서드와 해당 속성을 검사합니다. 그러나 이 작업은 어려운 것으로 입증되었습니다.
디렉토리나 아카이브에서 특정 클래스를 로드할 수 있는 URLClassloader 기반의 다양한 솔루션이 존재합니다. 그러나 이름이나 패키지 구조에 대한 사전 지식 없이는 클래스를 식별하고 로드할 수 있는 사람이 없는 것 같습니다.
문제의 핵심 해결
자세히 살펴보면 재귀 검색 기술을 통해 모든 클래스 파일을 획득하는 것이 아니라 발견된 각 파일에 대한 클래스 객체를 획득하는 것입니다.
JarFile 및 URLClassLoader의 기능 활용
제공된 코드 Java NIO를 효과적으로 활용하여 존재에 대한 사전 지식 없이도 JAR 파일에서 모든 클래스를 로드합니다. 프로세스에는 다음이 포함됩니다.
대안 고려: Javassist
해설자들의 제안에 따라 Javassist는 또 다른 실행 가능한 옵션을 제공합니다. 루프 전에 ClassPool을 초기화하면 클래스 로더로 클래스를 로드하는 대신 CtClass 객체를 생성할 수 있습니다. CtClass 객체는 메소드, 필드, 중첩 클래스 등을 포함한 다양한 클래스 속성에 대한 액세스를 제공합니다.
이 포괄적인 솔루션은 개발자가 런타임 시 클래스를 동적으로 로드하고 검사할 수 있는 기능을 제공하여 다음 작업에 대한 강력한 기반을 제공합니다. 정교한 코드 분석 및 조작 도구.
위 내용은 JAR 또는 폴더에서 런타임 시 Java 클래스를 동적으로 검색하고 검사하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!