Java 类从非默认包加载
当我试图在运行时动态加载一个类,而该类被编译在一个不是默认包的包中时,我遇到了一个ClassNotFound异常 例如: 包装名称:“型号”。 课程名称:“Cup.Class”。 这是我的代码:Java 类从非默认包加载,java,dynamic,packages,urlclassloader,dynamic-class-loaders,Java,Dynamic,Packages,Urlclassloader,Dynamic Class Loaders,当我试图在运行时动态加载一个类,而该类被编译在一个不是默认包的包中时,我遇到了一个ClassNotFound异常 例如: 包装名称:“型号”。 课程名称:“Cup.Class”。 这是我的代码: File file = new File(fileName); URL url; URL[] urls; String name = file.getName().substring(0, file.getName().length
File file = new File(fileName);
URL url;
URL[] urls;
String name = file.getName().substring(0, file.getName().length()-6);
file = new File(file.getAbsolutePath().replaceAll(file.getName(), ""));
System.out.println(name);
// Convert File to a URL
url = file.toURL();
urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass(name);
Shape temp = (Shape) cls.newInstance();
ShapeFactory.getInstance().registerShape(temp);
但是Cup是我想要加载的类,它扩展了Shape,应该是:ClassLoader cl=URLClassLoader.newInstance(url,Shape.class.getClassLoader())?这是我在线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError:Cup(错误名称:Model/Cup)java.lang.ClassNotFoundException:Model.Cup中得到的异常:是的,我尝试将该类放在名为“Model”的文件夹中,然后以相同的方式加载它,它成功了。非常感谢你。