Я создал класс Utility для отражения Java. Что мое intension, если имя метода передано как аргумент, тогда оно должно вернуть значение Collecton. Класс утилиты создается в проекте Eclipse Plugin (com.abc.utility
). Я добавил этот класс утилиты к другому проекту плагина (com.abc.dao
). Теперь, когда я называю этот метод, я получаю ClassNotFoundException
. Я понял проблему. Я не хочу добавлять зависимость от классов к проекту com.abc.utility
. Скорее com.abc.utility
проект плагина должен добавить как зависимость от других проектов.classnotfound exception reflection
Я не знаю, как ressolve. Не могли бы вы помочь мне в этом.
@SuppressWarnings({ "unchecked", "rawtypes" })
public <K>Collection<K> getCollection(T t, String methodName) {
Method[] methods =t.getClass().getMethods();
for (Method method : methods) {
String name = method.getName();
if (name.equals(methodName)) {
String name2 = method.getReturnType().getName();
Object newInstance = null;
try {
newInstance = Class.forName(name2).newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e1) {
e1.printStackTrace();
}
if (newInstance instanceof Collection) {
try {
return (Collection)method.invoke(t, null);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
return Collections.emptyList();
}