리플렉션을 사용하여 JAR 파일에서 클래스를로드하려고합니다. 이 JAR 파일에는 다른 JAR 파일에있는 인터페이스를 구현하는 클래스가 있습니다. 인터페이스가 포함 된 JAR 파일은 빌드 경로에 있으므로 프로젝트에서 인식합니다. 이 JAR 파일은 "client"및 "common/lib"인 두 개의 JBoss 6 폴더에도 있습니다.리플렉션을 사용하여 JBoss 6에 JAR 파일로드
java.net.URLClassLoader 클래스의 loadClass 메소드를 사용하여 클래스를 동적으로로드하여 객체를 만들려고 할 때 문제가 발생합니다. ClassNotFoundException는, 프로젝트와 JAR 파일이 공유하는 인터페이스에 관련해 슬로우됩니다. 나는 다음과 같은 방법을 통해 클래스 로더를 취득 해요 : 나는 클래스가 보스에없는 JAR에 대한 참조가 들어있는 파일 변수이기 때문에이 클래스 로더를 사용하여 클래스를로드 할
public static ClassLoader getClassLoader(final String fileName) {
final File file = new File(fileName);
URL url;
ClassLoader classLoader = null;
try {
url = file.toURL();
final URL[] urls = new URL[]{url};
classLoader = new URLClassLoader(urls);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return classLoader;
}
.
JBoss의 다른 폴더에 인터페이스와 함께 JAR을 포함해야합니까?
URLClassLoader 인스턴스를 어떻게 얻습니까? 시도 했는가 : java.lang.Thread.getContextClassLoader(). loadClass()? –
이 방법도 시도했지만 클래스가 현재 스레드에없는 경우 JAR 파일에 있습니다. 나는 더 많은 정보를 제공하기 위해 질문을 편집했다. –