【发布时间】:2014-10-27 08:10:48
【问题描述】:
我编写了自己的类加载器,它与实现接口插件的类一起使用。但我不能将 Class 转换为 Plugin。怎么了?
public Plugin load(String pluginName, String pluginClassName) {
SimpleClassLoader system = new SimpleClassLoader();
system.setClassName(pluginClassName);
Plugin aClass = null;
try {
aClass = (Plugin) system.loadClass(pluginRootDirectory + pluginName + "\\" + pluginClassName + ".class");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return aClass;
}
错误:(18, 47) java: 不兼容的类型: java.lang.Class 无法转换为插件
我补充说这是我的 SimpleClassLoader 类的主要部分,它扩展了 ClassLoader。
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte[] bytes;
try {
bytes = Files.readAllBytes(new File(name).toPath());
} catch (IOException e) {
throw new ClassNotFoundException();
}
return defineClass(className, bytes, 0, bytes.length);
}
【问题讨论】:
-
抛出了什么异常
-
loadClass 只是加载类。然后,您需要创建该类的一个新实例。
标签: java class casting classloader