Java反射(reflect)Class.forName失败

标签 java class reflection syntax classnotfoundexception

使用:

final Class<?> c = Class.forName(path);

这里是类所在的位置:http://prntscr.com/juqp7g

这是错误:

java.lang.ClassNotFoundException: interfaces/container/InventoryComponentAction
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at scripts.action.ActionManager.init(ActionManager.java:48)
at scripts.system.Application.lambda$0(Application.java:17)
at scripts.system.Application.log(Application.java:29)
at scripts.system.Application.main(Application.java:17)

最佳答案

Class.forName 的参数不是路径,而是完全限定的类名(使用点,而不是斜杠)。

不要做你正在做的事情,而是尝试:

final Class<?> c = Class.forName("interfaces.container.InventoryComponentAction");

或者更一般地说:

final Class<?> c = Class.forName(path.replace('/', '.'));

关于Java反射(reflect)Class.forName失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50849401/

相关文章:

c - Objective-C运行时如何实例化根元类和其他类描述?

c++ - 如何将用户输入存储在与默认构造函数中的变量初始化值不同的变量中?

java - 如何使用Java Reflect获取类级别注释值?

java - 在 BufferedReader 之后使用 DataInputStream

java - Apache Commons 数学正态累积概率

java - 如果 HashMap 满了怎么办?

java - Android MediaPlayer 在 Nougat 中不工作

python - 使用类的 __call__ 方法作为 Numpy curve_fit 的输入

go - 如何使用反射包操作结构中的映射字段?

C#自定义复制构造函数,复制事件