Java getMethod()未找到方法

Java getMethod()未找到方法,java,reflection,methods,Java,Reflection,Methods,我试图使用Java的反射为项目创建模块加载器,但getMethod方法似乎拒绝定位存在的方法,即使该方法已明确定义 在Module.class文件中: 公共最终void loadorg.clustermc.core.ClusterCore插件 我要求核心打印出它在类中找到的方法。结果是: 方法:[public void me.capit.clustersample.SampleModule.onLoad,public void me.capit.clustersample.SampleModul

我试图使用Java的反射为项目创建模块加载器,但getMethod方法似乎拒绝定位存在的方法,即使该方法已明确定义

在Module.class文件中: 公共最终void loadorg.clustermc.core.ClusterCore插件

我要求核心打印出它在类中找到的方法。结果是: 方法:[public void me.capit.clustersample.SampleModule.onLoad,public void me.capit.clustersample.SampleModule.onLoad,public final void org.clustermc.core.Module.loadorg.clustermc.core.ClusterCore,/*Object*/]中的其他内容; 请注意,SampleModule扩展了模块

核心部分: 方法enable=c.getMethodonLoad; 方法init=c.getMethodload,org.clustermc.core.ClusterCore.class


onLoad的'enable'变量工作正常,但是在尝试查找loadClusterCore.class时,我得到一个NoSuchMethodException。为什么…?

检查加载方法的范围,如果它是私有的,则不会访问它。你需要设置为真。注意getDeclaredMethod而不是getMethod

Method init = c.getDeclaredMethod("load", org.clustermc.core.ClusterCore.class);
在调用之前,您需要执行以下命令行:-

 init.setAccessible(true);

如果使用多个类加载器,请确保不要通过不同的加载器多次加载类。否则,您可能会遇到ClusterCore.class引用与ClusterCore参数类型不同的运行时类的问题。