0
我一直在研究一個項目,我在之前詢問過的this question中描述過。我試圖從名字動態生成的類中調用一個方法(並且在程序運行時編譯類)。我叫Class watchFace = Class.forName("pebbleos.PebbleOS_" + fileName);
其次currentWatchFace = watchFace.newInstance();
的方法loadWatchFace()
,然後在方法runWatchFace()
我嘗試使用調用的方法是:調用方法時出錯 - java.lang.RuntimeException:不可編譯的源代碼 - 錯誤的樹型:<any>
Method method = null;
try {
method = currentWatchFace.getClass().getMethod("initializeFace");
} catch (SecurityException | NoSuchMethodException e) {
System.out.println("Error");
}
method.invoke(currentWatchFace);
我的手錶表面的代碼正在從一個文本文件,它看起來像這樣採取:
package pebbleos;
public class PebbleOS_Default {
public PebbleOS_Default() {
}
public void initializeFace() {
System.out.println(「Hello World」);
}
}
只是一個快速的筆記,上面是按說這種錯誤的「病因」:java.lang.reflect.InvocationTargetException
使用'e.printStackTrace()'而不是你天真的'System.out.println(「Error」)'來檢查異常**的細節,並對主題進行相關搜索。 –
這部分(以爲你當然是正確的)此刻不相關,因爲那部分代碼沒有被調用,即該方法顯然正在被正確初始化。 –
將該代碼包裝到另一個'try-catch'語句中,並使用'e.printStackTrace()'獲取異常的正確細節。你根據它提供的細節評估異常,而不僅僅是它的類型。 –