2011-07-29 14 views
1

如果我有以下方式從Java中的線程上下文類加載器中排除certin類?

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

所有的a.jar文件,b.jar和c.jar類將提供給我的程序的所有線程調用的程序。我希望在程序運行期間的某個時間點創建一個線程,並提供有限的一組類,不包括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 ?格式=確定從春天的lib? –

回答

1

你可以編寫一個自定義ClassLoader(即擴展URLClassLoader),它會在不需要路徑的類的loadClass(String name)中引發ClassNotFound異常。將其設置爲contextClassLoader並從中加載線程的Runnable。