폴더 또는 JAR 파일에서 동적 클래스 로딩
Java에서는 런타임에 클래스를 로드하는 기능이 다양한 애플리케이션에 필수적입니다. 이 질문은 이름이나 패키지 구조에 대한 사전 지식 없이 폴더나 JAR 파일에서 클래스를 로드하는 메커니즘을 이해하기 위한 것입니다.
URLClassloader는 디렉토리나 아카이브에서 특정 클래스를 로드하기 위한 솔루션을 제공합니다. 그러나 클래스 이름을 명시적으로 지정해야 합니다. 클래스 이름을 알 수 없는 경우 이 접근 방식은 효과적이지 않습니다.
이러한 제한을 극복하기 위해 제공된 솔루션은 JarFile 및 URLClassLoader 클래스를 활용하여 JAR 파일 내에 포함된 모든 클래스를 스캔하고 로드합니다.
JarFile 개체를 사용하면 모든 항목을 열거할 수 있으므로 JAR 내의 .class 파일을 식별할 수 있습니다. 그런 다음 각 .class 파일은 JAR 파일을 가리키는 URL을 기반으로 하는 URLClassLoader를 사용하여 로드됩니다.
이 프로세스에는 JarEntry 객체에 대한 반복, 항목 경로에서 클래스 이름 추출, 다음을 사용하여 해당 클래스 로드가 포함됩니다.
Javassist를 사용한 대체 접근 방식
클래스 로더를 사용하는 대신 클래스 조작에 널리 사용되는 라이브러리인 Javassist를 사용할 수 있습니다. ClassPool 객체를 초기화하면 JarEntry 경로에서 파생된 클래스 이름을 사용하여 해당 클래스를 나타내는 CtClass를 얻을 수 있습니다.
CtClass에서는 클래스의 모든 메소드, 필드, 중첩 클래스 및 기타 세부 정보를 얻을 수 있습니다. 로드된 클래스를 검사하기 위한 보다 포괄적이고 반영적인 인터페이스를 제공합니다.
위 내용은 이름을 모르면서 폴더나 JAR 파일에서 클래스를 동적으로 로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!