1 回答

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