我有一個名爲「MyClassLoader」的URLClassLoader,它設置了一些jar。 如果我嘗試在運行時加載.jars:我的加載程序工作,但使用setContextClassLoader不?
MyClassLoader.loadClass("MyClass");
它的工作原理。
如果我嘗試
Thread.currentThread().setContextClassLoader(MyClassLoader);
Thread.currentThread().getContextClassLoader().loadClass("MyClass");
它也適用。
但如果我嘗試
Thread.currentThread().setContextClassLoader(MyClassLoader);
Class.forName("MyClass");
它拋出一個ClassNotFoundException
。
當然,Class.forName
這裏只是一個例子;試圖使用MyClass
也會拋出異常。
所有這可能意味着我不明白setContextClassLoader
如何工作。任何人都可以向我澄清這一點,並幫助我理解它 - 我該怎麼做才能讓我的代碼工作?謝謝。
是的,是的Class.forName中的安全編碼指南部6列爲出現異常行爲依賴於呼叫者的類加載器的那些方法之一。不是那些依賴線程上下文類加載器的方法更好。聰明的事情是明確使用類加載器。 – 2009-07-03 10:57:18