Java 类从非默认包加载

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

当我试图在运行时动态加载一个类,而该类被编译在一个不是默认包的包中时,我遇到了一个ClassNotFound异常

例如: 包装名称:“型号”。 课程名称:“Cup.Class”。 这是我的代码:

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”的文件夹中,然后以相同的方式加载它,它成功了。非常感谢你。