Java getMethod()没有找到方法

时间:2014-12-07 18:07:33

标签: java reflection methods

我正在尝试使用Java的思考来为项目创建模块加载器,但getMethod()方法似乎拒绝找到存在的方法,即使方法已明确定义。

在Module.class文件中: public final void load(org.clustermc.core.ClusterCore plugin);

我让核心打印出它在Class中找到的方法。结果:
Methods: [public void me.capit.clustersample.SampleModule.onLoad(), public void me.capit.clusterSample.SampleModule.onUnload(), public final void org.clustermc.core.Module.load(org.clustermc.core.ClusterCore), /*Other stuff from Object*/];
请注意,SampleModule扩展了Module。

核心: Method enable = c.getMethod("onLoad"); Method init = c.getMethod("load", org.clustermc.core.ClusterCore.class);

onLoad()的'enable'变量工作正常,但是在尝试查找load(ClusterCore.class)时,我得到NoSuchMethodException。为什么......?

1 个答案:

答案 0 :(得分:0)

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

Method init = c.getDeclaredMethod("load", org.clustermc.core.ClusterCore.class);

在调用之前,您需要执行以下行: -

 init.setAccessible(true);