我正在写一个通用的翻译.它包含原始进程(如方法调用,方法返回,控制语句等),由翻译器运行,翻译器读取源代码,用任何语言编写,并激活基元.该转换器的核心是一个字符串数组,它包含实现进程和方法动态激活的方法的名称.
以下代码用于调用索引procIndex指向的方法.它基于我发现的一个例子,与其他例子相同:
try {
Class<?> c = Class.forName("FinalTestDecoder");
Method commandExe =
c.getDeclaredMethod (commandsTable[commandIndex][methodName], (Class<?>[])null);
commandExe.invoke (commandExe, (Object []) null);
} catch (IllegalAccessException| IllegalArgumentException|
InvocationTargetException| EmptyStackException |
ClassNotFoundException | NoSuchMethodException | SecurityException e) {
handleErr(cmdMethodNotFound, "Command: "+ commandsTable[commandIndex][programCommand]);
} finally {
found = true;
} // Cause the loop to terminate
Run Code Online (Sandbox Code Playgroud)
handleErr方法正在处理错误条件并获取十进制错误代码和字符串.任何异常都可以调用错误处理程序.
问题出在行中Class<?> c = Class.forName("FinalTestDecoder");,抛出ClassNotFoundException.为了克服这个问题,我做了两个实验:最初,调用的方法与调用代码在同一个类中; 在第二个我创建了一个包含调用方法的embedde类.结果是一样的.
好吧,我在这个问题上花了好几个小时,没想到了.谢天谢地,欢迎任何帮助