2011-07-29 4 views
1

난에 a.jar, 만, b.jar, 및 c.jar에서Java의 스레드 컨텍스트 클래스 로더에서 certin 클래스를 제외 하시겠습니까?

java -cp a.jar;b.jar;c.jar MainClass 

모든 클래스를 내 프로그램에서 모든 스레드에 사용할 수 있습니다 다음과 같은 방법으로 호출하는 프로그램이있는 경우. a.jar, b.jar 및 c.jar의 대부분의 클래스를 제외하고 제한된 클래스 집합을 사용하여 프로그램을 실행하는 동안 생성되는 스레드를 만들고 싶습니다. 시스템 클래스 경로의 모든 것을 포함하지 않는 클래스 로더에 필요한 클래스를 추가하거나 클래스 로더를 가져 와서 클래스를 제거하는 방법이 있습니까? 내가 아는 유일한 옵션은 부트 스트랩 클래스를 작성하고 JVM 초기화에서 각 스레드에 대한 필수 클래스 경로를로드하는 것입니다. 내가 명백한 것을 놓치고 있거나 유일한 옵션을 부트 스트랩하는 것입니까?

+0

http://jarvana.com/jarvana/view/org/springframework/spring/2.5.6/spring-2.5.6-sources.jar!/org/springframework/core/OverridingClassLoader.java와 같은 것을 사용할 수 있습니까? ? format = spring lib의 ok? –

답변

1

경로 상에 원하지 않는 클래스의 loadClass (String name)에 ClassNotFound 예외를 발생시키는 사용자 정의 ClassLoader (즉, URLClassLoader 확장)를 작성할 수 있습니다. 이것을 contextClassLoader로 설정하고 스레드로부터 Runnable을로드하십시오.

관련 문제