我有一个简单的jar文件,其中包含类A

public class A {}


然后在运行时加载它:

var classLoader = new URLClassLoader(Array(my_jar_file.toURI.toURL))
var clazz = classLoader.loadClass("A")


可以,它可以加载类A。此命令也可以:

clazz.newInstance


但是当我将其转换为A时:

clazz.newInstance.asInstanceOf[A]


我收到此错误:

java.lang.ClassCastException: A cannot be cast to A


请你帮助我好吗?

最佳答案

您的代码暗示您在调用clazz.newInstance.asInstanceOf [A]的一个classLoader上下文中有“ A”可用,这是与获取clazz对象的位置不同的上下文。问题是您在两个不同的classLoader上下文中具有类“ A”的两个不同实例。从类“ A”的一个版本创建的对象不能在不同的classLoader上下文中强制转换为另一版本的实例。

关于class - Scala-动态类加载-A类不能转换为A类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8868394/

10-09 21:23