애플리케이션이 실행되는 동안 새 JAR 파일을 동적으로 로드하려면 실행하면 URLClassLoader 클래스를 활용할 수 있습니다.
ClassLoader loader = URLClassLoader.newInstance( new URL[] { yourURL }, getClass().getClassLoader() );
이렇게 하면 새 클래스가 생성됩니다. 지정된 URL을 포함하는 ClassLoader 인스턴스입니다. 그런 다음 이 클래스 로더를 사용하여 JAR 파일에서 클래스를 로드할 수 있습니다.
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
여기서 clazz는 JAR 파일에서 로드한 클래스를 나타냅니다.
애플리케이션이 실행되는 동안 기존 클래스를 다시 로드하는 것은 데이터 불일치가 발생할 수 있으므로 더 까다로울 수 있습니다. 그러나 필요한 경우 다음 단계를 수행할 수 있습니다.
Constructor<?> ctor = runClass.getConstructor(); Runnable doRun = (Runnable) ctor.newInstance(); doRun.run();
관련 스레드와 개체가 더 이상 클래스 로더를 참조하지 않으면 클래스 로더는 더 이상 사용되지 않습니다. 그런 다음 ThreadLocal, JDBC 드라이버 또는 유사한 문제로 인한 메모리 누수가 없는 한 가비지 수집될 수 있습니다.
작업 중에 기존 개체와 관련된 데이터를 보존해야 하는 경우 클래스를 다시 로드하려면 직렬화와 같은 지속성 메커니즘을 사용하여 데이터를 저장하고 복원하는 것을 고려해야 합니다.
URLClassLoader.addURL을 사용하여 기존 클래스 로더에 새 클래스를 추가하는 것도 가능합니다. 그러나 클래스 로드 시도가 실패하면 클래스가 해당 클래스 로더 인스턴스에 로드되지 않습니다.
위 내용은 런타임 시 Java 애플리케이션에서 JAR을 동적으로 로드하고 다시 로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!