我一直收到这个错误消息:
06-13 18:53:33.839: W/System.err(19893): java.lang.NoSuchMethodException: showIt
06-13 18:53:33.839: W/System.err(19893): at java.lang.ClassCache.findMethodByName(ClassCache.java:247)
06-13 18:53:33.839: W/System.err(19893): at java.lang.Class.getDeclaredMethod(Class.java:731)我确信我的方法是存在的,我尝试从一个异步任务开始。方法如下:
public static void showIt(String[] result) {这是我尝试过的代码:
try {
Class<?> p = Class.forName(executeClass);
Object t = p.newInstance();
Method m = p.getDeclaredMethod(executeMethod, p);
m.invoke(t, result);
} catch (Exception e) {
e.printStackTrace();
}发布于 2013-06-14 01:00:17
三个问题。
第二个参数必须是invoke method.
最后,这里是一个有效的代码片段。
String[] result = new String[] { "res" };
Class<?> p = Class.forName(executeClass);
Method m = p.getDeclaredMethod("showIt", result.getClass());
m.invoke(null, new Object[] {result});发布于 2013-06-14 01:05:13
在给定executeClass = "YourClass"和executeMethod = "showIt"的情况下,p.getDeclaredMethod(executeMethod, p)试图找到showIt(YourClass arg),但您找到了showIt(String[] arg)。
试试p.getDeclaredMethod(executeMethod, String[].class)。
发布于 2013-06-14 01:13:15
这里有两个错误:
。
public class Main {
public static void main(String[] args){
try {
Class<?> p = Main.class;
String[] arguments = {"ciao"};
Method m = p.getDeclaredMethod("showIt",String[].class);
m.invoke(null, arguments);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void showIt(String[] result) {
System.out.println(result[0]);
}
}https://stackoverflow.com/questions/17092844
复制相似问题