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