Я пытаюсь получить метод из класса, используя Java 1.7.
Очень странные вещи, если я печатаю methodName и его параметры, то же самое, что я использовал, но я всегда получаю: java.lang.NoSuchMethodException:
Вот мой код:
public void invokeMethod(String className, String myMethod, List<Object> parametersMethod) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException{
Class<?> cls = Class.forName(className);
Method[] allMethods = cls.getDeclaredMethods();
for(Method m : cls.getDeclaredMethods()){
Type[] types = m.getParameterTypes();
String tmp="";
for (Type type : types) {
tmp+=type+" ";
}
log.info(" " +m.getName()+" "+tmp); //
}
Object obj = cls.newInstance();
log.info("myMethod "+myMethod);
Method m= allMethods.getClass().getMethod(myMethod, String.class, boolean.class);
log.info("m "+m.getName()+ " "+m.getParameterTypes()+ " "+m.getDefaultValue());
m.invoke(obj, parametersMethod); }
Вот метод, который я пытаюсь вызвать:
public void tryIt(String myString, boolean mybool) throws Exception {
//Do something
}
Log.info печатает: tryIt class java.lang.String boolean
Но я получаю (когда я пытаюсь использовать Method m= allMethods.getClass().getMethod(myMethod, String.class, boolean.class);)
:
java.lang.NoSuchMethodException: [Ljava.lang.reflect.Method;.tryIt (java.lang.String, boolean)
Я пытаюсь использовать Boolean вместо Boolean, но ничего не меняется.
invokeMethod находится на веб-сервисах, использующих Jboss7, и все мои классы @StateLess
.