我使用下面的代碼動態加載在Java類:NoClassDefFoundError的與Java反射
URL url = new File(ACTIONS_PATH).toURI().toURL();
URLClassLoader clazzLoader = new URLClassLoader(new URL[]{url});
Class<RatingAction> clazz = (Class<RatingAction>) clazzLoader.loadClass(name);
return clazz.newInstance();
該代碼可以使用簡單類(沒有繼承或接口),但我想加載類是實現一個接口(該類加載器可以使用findClass
找到) 當我調用class.newInstance時,我得到了提到的異常。 我在做什麼錯?
謝謝。
我不知道你的問題,而是寫'類',你應該加載類'RatingAction',但這種類型必須是已經加載爲你寫這個。你的意思是'Class <?擴展RatingAction>'? –
2011-05-15 13:25:06
我能夠通過簡單的使用'Class.forname(name).newInstance'來繞過這個問題,但我很樂意理解爲什麼原始代碼不起作用 – 2011-05-15 13:26:53
因爲這次你沒有使用自定義cloassloader。 – Tarlog 2011-05-15 13:28:04