我有一个包含类的简单 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
请你帮助我好吗?
您的代码意味着您在一个类加载器上下文中可以使用“A”,您可以在其中调用 clazz.newInstance.asInstanceOf[A],这是一个与您获取 clazz 对象的单独上下文。问题是,在两个不同的类加载器上下文中,您有类“A”的两个不同实例。从类“A”的一个版本创建的对象不能在不同的类加载器上下文中转换为另一版本的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)