我有多個編譯的Java類文件,來自目錄中的各種軟件包,就像這樣。Java URLClassloder掛起
C:/classes/package/A.class
C:/classes/package/B.class
C:/classes/package/subpackage/C.class
C:/classes/package/subpackage/D.class
我試圖加載它們使用URLClassloader像這樣。
URLClassloder classloader = new URLClassLoader(new URL[]{new File("C:/classes/").toURI().toURL()});
System.out.println("Loading classes...");
classloader.loadClass("package.A");
classloader.loadClass("package.B");
classloader.loadClass("package.subpackage.C");
classloader.loadClass("package.subpackage.D");
System.out.println("Loaded classes.");
此代碼,直到我嘗試加載「package.subpackage.D」運行良好。該程序永久掛起。
更改加載類的順序沒有效果,但經過大量實驗後,我發現任何擴展本機類的類都會導致這樣的掛起,「本機」指的是運行時中已經存在的所有類。
因此,這裏是我的問題:
這是在運行時加載類的正確方法嗎?
問題有解決嗎?
謝謝您的時間。
快速'jstack'或^ Z/^中斷應顯示掛起的位置。 –
我已經知道掛起發生的位置,並發現擴展本機類和掛起之間的關聯;有沒有關於這方面的任何文件? – Terra
我的意思是在執行的地方。 –