从随机目录加载类时名称错误

2020年8月29日 14点热度 0条评论

我想将.class文件的实例放到随机目录中。我试过了

private final String CLASS_FOLDER =
            "C:\\Users\\test\\Desktop\\fix\\core\\src\\test\\org\\poc\\";

    private  Class getClassFromFile(String fullClassName) throws Exception {
        URLClassLoader loader = new URLClassLoader(new URL[] {
                new URL("file://" + CLASS_FOLDER)
        });
        return loader.loadClass("Order");
    }

运行代码时出现错误:

java.lang.NoClassDefFoundError: Order (wrong name: com/solutions/backend/toms/actions/Order)

看起来像是用于检查正确软件包名称的安全检查。有否可以跳过此检查的方法,因为我需要将.class文件加载到随机目录中?

解决方案如下:

Java类必须位于directory hierarchy that matches their package中。您不能将Java .class放在“随机”目录中,这根本不是类加载的工作方式。