>Java >java지도 시간 >JAR 또는 폴더에서 런타임 시 Java 클래스를 동적으로 검색하고 검사하려면 어떻게 해야 합니까?

JAR 또는 폴더에서 런타임 시 Java 클래스를 동적으로 검색하고 검사하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 16:31:02323검색

How Can I Dynamically Discover and Inspect Java Classes at Runtime from JARs or Folders?

폴더 또는 JAR에서 런타임 시 클래스 검색

Java 애플리케이션의 구조를 자세히 살펴보고 의미 있는 통찰력을 추출하는 Java 도구를 구상하세요. 이를 달성하려면 도구는 지정된 소스(JAR/WAR 또는 폴더)에서 .class 파일을 검사해야 합니다. 그런 다음 리플렉션을 사용하여 클래스 메서드와 해당 속성을 검사합니다. 그러나 이 작업은 어려운 것으로 입증되었습니다.

디렉토리나 아카이브에서 특정 클래스를 로드할 수 있는 URLClassloader 기반의 다양한 솔루션이 존재합니다. 그러나 이름이나 패키지 구조에 대한 사전 지식 없이는 클래스를 식별하고 로드할 수 있는 사람이 없는 것 같습니다.

문제의 핵심 해결

자세히 살펴보면 재귀 검색 기술을 통해 모든 클래스 파일을 획득하는 것이 아니라 발견된 각 파일에 대한 클래스 객체를 획득하는 것입니다.

JarFile 및 URLClassLoader의 기능 활용

제공된 코드 Java NIO를 효과적으로 활용하여 존재에 대한 사전 지식 없이도 JAR 파일에서 모든 클래스를 로드합니다. 프로세스에는 다음이 포함됩니다.

  1. 문제의 JAR을 나타내는 JarFile 객체 구성
  2. JarFile의 항목을 열거하여 .class 파일 식별
  3. URLClassLoader 인스턴스를 생성하여 로드 각 JarEntries에 정의된 대로 추출된 클래스 이름

대안 고려: Javassist

해설자들의 제안에 따라 Javassist는 또 다른 실행 가능한 옵션을 제공합니다. 루프 전에 ClassPool을 초기화하면 클래스 로더로 클래스를 로드하는 대신 CtClass 객체를 생성할 수 있습니다. CtClass 객체는 메소드, 필드, 중첩 클래스 등을 포함한 다양한 클래스 속성에 대한 액세스를 제공합니다.

이 포괄적인 솔루션은 개발자가 런타임 시 클래스를 동적으로 로드하고 검사할 수 있는 기능을 제공하여 다음 작업에 대한 강력한 기반을 제공합니다. 정교한 코드 분석 및 조작 도구.

위 내용은 JAR 또는 폴더에서 런타임 시 Java 클래스를 동적으로 검색하고 검사하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.