2016-06-07 141 views
0

因此,使用ClassLoader讀取外部.class文件時存在很多問題和示例,但我正在努力查看哪裏出錯。加載自定義類時的ClassNotFoundException

val folderUrl: URL = new File("D:/tmp/").toURI.toURL //file:/D:/tmp/ 
val cl: URLClassLoader = new URLClassLoader(Array(folderUrl), this.getClass.getClassLoader) 
cl.loadClass("my.package.MyClassName") 

最後一行拋出一個ClassNotFoundException

文件夾d:/ tmp目錄/包含一個類文件 「MyClassName.class」。 該班有包「my.package」 該班被稱爲「MyClassName」

我不明白我在做什麼錯了?

編輯: 這涉及兩個最接近的問題是:

但這些都沒有我的問題然而,他們都得到進一步比我在完成問題之前成功加載課程所做的要好。

+0

可能的重複[如何調用使用反射的Scala對象方法?](http://stackoverflow.com/questions/3039822/how-do-i-call-a-scala- object-method-using-reflection) –

+0

這是一個java或scala類嗎? –

+0

這是一個scala課程。 您鏈接到的問題沒有提到任何類文件加載,我不認爲它是重複的,除非我誤解? –

回答

0

所以問題在於文件夾結構與軟件包名稱不匹配。

所以我的文件夾結構是 d:/tmp/MyClassName.class 類的全名是 my.package.MyClassName

類加載器需要的文件夾結構是 d:/ tmp目錄/我的/package/MyClassName.class