2012-02-01 2 views
0

URLClassLoader를 사용하여 jar 파일에서 java 클래스를로드하고 있습니다.클래스 로더를 통해로드 된 java 클래스의 멤버가 초기화되지 않았습니다.

String className = ... 
File jarFile = ... 
ClassLoader parent = this.getClass().getClassLoader(); 
ClassLoader urlLoader = new URLClassLoader(new URL[] { jarFile.toURI().toURL() }, parent); 
Class <?> loadedClass = urlLoader.loadClass(className); 

이것은 지금까지 작동하지만 loadedClass의 모든 멤버 (예 : declaredMethods, etc ...)는로드 후에 null입니다. 그게 의도 한 동작이며 모든 멤버가 사용되면 동적으로로드됩니다. 그들을 즉시 초기화하는 방법이 있습니까?

답변

1

loadedClass의 회원에게 어떻게 접근합니까? 개인 필드는 해당 getter 메서드가 처음 호출 될 때 초기화되므로 getter에서 null을 가져 오면 안됩니다.

이 게터를 사용하고 예상대로 작동하면 왜 모든 구성원을 열성적으로 초기화할까요? 이것은 불필요한 작업처럼 보입니다.

+0

나는 isAssignableFrom()을 호출하는 NullPointerException을 가지고 이것이 이유라고 생각했던 지점까지 디버깅했다. 하지만 방금 isAssignablefrom()을 잘못된 방향으로 호출 한 것을 보았습니다. 그냥 월요일처럼 느낍니다 ;-) 당신을 괴롭히고 죄송합니다. 빠른 답변을 주셔서 감사합니다. –

관련 문제