2015-06-20 19 views
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

+1

使用'e.printStackTrace()'而不是你天真的'System.out.println(「Error」)'來檢查異常**的細節,並對主題進行相關搜索。 –

+0

這部分(以爲你當然是正確的)此刻不相關,因爲那部分代碼沒有被調用,即該方法顯然正在被正確初始化。 –

+2

將該代碼包裝到另一個'try-catch'語句中,並使用'e.printStackTrace()'獲取異常的正確細節。你根據它提供的細節評估異常,而不僅僅是它的類型。 –

回答

1

從您發佈的代碼,看來你使用了錯誤的字符acter 看起來很像"但它們不一樣。修復它,重新編譯代碼並重試。

相關問題