2015-06-20 33 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 看起来很像"但它们不一样。修复它,重新编译代码并重试。

相关问题