可能重复:
将字符串转换为代码
我有一个程序需要能够将字符串作为代码执行。例如,我会有一个字符串,内容为:
public void do(int a, int b){
a++;
b--;
System.out.println(a);
System.out.println(b);
}
现在,如何让程序执行该字符串?
您可以将此字符串包装在一个类中并使用Java Compiler API对其进行编译。您必须运行 JDK 而不是 JRE。
看到这个类似的问题
这个简单的答案是,这在 Java 中无法做到。您可以通过尝试调用 javac 编译器来想出一些 hacky 方法,但我不确定您将如何真正加载或使用它。
在一些脚本语言中,比如 Javascript 和 Lua,你可以使用 'eval' 类型的函数来尝试加载你的字符串并执行它。
我认为问题是如何运行这个程序?答案是它需要包含在一个类定义中,以及一个“静态主”函数,以便 java 命令行工具可以在编译后运行它。
看看Koala Dynamic Java,它接受文本并动态编译和运行它。