2016-06-07 58 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