1 回答

TA貢獻1805條經驗 獲得超9個贊
這是典型的 ClassLoader 問題。您正在嘗試查找當前類加載器未加載的類,因此ClassNotFoundException拋出 a 。
Javadoc將java.lang.Class方法定義為Class.forName(className):
返回與具有給定字符串名稱的類或接口關聯的 Class 對象。Class.forName(className, true, currentLoader)調用此方法等效于currentLoader表示當前類的定義類加載器。
因此,此方法調用將嘗試在當前類加載器上下文中查找指定的類。你試圖找到的接口還沒有被這個類加載器加載,所以ClassNotFoundException拋出一個。
如果.jar文件在你的應用程序的類路徑中,你可以簡單地使用系統類加載器來代替,就像這樣......
ClassLoader systemClassLoader = ClassLoader.getSystemClassloader();
Class<?> clazz = Class.forName(className, true, systemClassLoader)
...但是如果您的.jar文件位于其他地方,并且尚未加載,您將需要相應地加載它:
ClassLoader urlClassLoader = new URLClassLoader(new URL[]{new URL("path/to/file.jar")});
Class<?> clazz = Class.forName(className, true, urlClassLoader)
添加回答
舉報