Javaリフレクション用のユーティリティクラスを作成しました。メソッド名が引数として が渡された場合、私の意図は、Collectonの値を返す必要があります。ユーティリティクラスは、Eclipse Pluginプロジェクト(com.abc.utility
)で作成されます。 このユーティリティクラスを別のプラグインプロジェクト(com.abc.dao
)に追加しました。今私はこのユーティリティメソッドを呼び出すと、私はClassNotFoundException
を得ています。 私は問題を理解しました。私はクラスへの依存性をcom.abc.utility
プロジェクトに追加したくありません。むしろ com.abc.utility
プラグインプロジェクトは他のプロジェクトに依存関係として追加する必要があります。classnotfound例外リフレクション
私は解決方法を知らない。これで私を助けてください。
@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();
}