gpt4 book ai didi

java - java反射的NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-30 05:03:05 26 4
gpt4 key购买 nike

我使用以下代码在java中动态加载类:

URL url = new File(ACTIONS_PATH).toURI().toURL();
URLClassLoader clazzLoader = new URLClassLoader(new URL[]{url});
Class<RatingAction> clazz = (Class<RatingAction>) clazzLoader.loadClass(name);
return clazz.newInstance();

此代码适用于简单的类(没有继承或接口(interface)),但我想要加载的类正在实现一个接口(interface)(类加载器可以使用 findClass 找到该接口(interface))当我调用 class.newInstance 时,我得到了提到的异常。我做错了什么?

谢谢。

最佳答案

您的类路径有问题。我猜这是因为您没有定义父类加载器 - “url”是否包含所有需要的类(包括系统类)?

当类实际解析时,您会收到异常,因此加载的类中出现的类也会被加载。如果将 clazzLoader.loadClass(name) 更改为 clazzLoader.loadClass(name, true) ,您将在 loadClass 行中收到异常。

尝试以下操作:

URL url = new File(ACTIONS_PATH).toURI().toURL();
URLClassLoader clazzLoader = new URLClassLoader(new URL[]{url}, getClass().getClassLoader());
Class<RatingAction> clazz = (Class<RatingAction>) clazzLoader.loadClass(name);
return clazz.newInstance();

关于java - java反射的NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com