6 scala class loading dynamic classloader
我有一个包含类的简单jar文件A:
public class A {}
Run Code Online (Sandbox Code Playgroud)
然后我在运行时加载它:
var classLoader = new URLClassLoader(Array(my_jar_file.toURI.toURL))
var clazz = classLoader.loadClass("A")
Run Code Online (Sandbox Code Playgroud)
没关系,它可以加载课程A.这个命令也可以:
clazz.newInstance
Run Code Online (Sandbox Code Playgroud)
但当我把它投射到A:
clazz.newInstance.asInstanceOf[A]
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
java.lang.ClassCastException: A cannot be cast to A
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗?
您的代码意味着你有"A"在您致电clazz.newInstance.asInstanceOf [A],这是从那里你正在向clazz对象单独的背景下一个类装载器上下文中可用.问题是在两个不同的classLoader上下文中有两个不同的类"A"实例.从一个版本的"A"类创建的对象不能转换为另一个classLoader上下文中的另一个版本的实例.
| 归档时间: |
|
| 查看次数: |
6482 次 |
| 最近记录: |