用Java执行Java代码

可能重复:
将String转换为Java中的代码
Java上的动态代码执行

我有一个String包含:
"for(int i=0 ; i<5 ; i++){System.out.println(\"*\");}"
我可以在Java中执行此String中的代码吗?

从Java 6开始,您可以使用SDK中的标准API编译和运行定义为String或File的Java 编译单元 (编译单元基本上是.java文件中的所有内容 – 包,导入,类/接口/枚举),看看这个例子 。 但是,您无法像问题中那样运行任意Java代码段。

如果可能的话,最好嵌入一种不同的脚本语言,允许您从Java程序运行代码片段 – 例如,JavaScript,Groovy, MVEL , BeanShell等。

如果你把它变成一个完整的源文件,你可以通过编程方式将它提供给java编译器,但是上次我检查过只有在你的机器上安装了java SDK时它才可用; 它在具有Java客户端分发的计算机上不可用。 当然,从那时起,这可能已经发生了变化。 查看包com.sun.tools.javac,您将在那里找到java编译器API。

也许你可以像Groovy一样运行它:

http://groovy.codehaus.org/Embedding+Groovy

没有用于执行此操作的Java Core API函数,但您可以使用Runtime.exec或使用com.sun.tools.javac一些“不安全”类来调用javac这是一个示例:

http://juixe.com/techknow/index.php/2006/12/12/invoke-javac-at-runtime/

我认为你不能执行包含java代码的String。

但是,如果您可以将其保存为java源文件并尝试使用ProcessBuilder类来执行,那么值得一试。

从未尝试过,也不确定这是否是最好的方法。 所以谨慎使用:)

祝好运!

还发现了一个类似的post: java中的Runtime类

不,您无法在程序中执行此代码。