从Java内部运行Java代码

时间:2010-12-10 04:10:50

标签: java java-compiler-api

  

可能重复:
  using eval in Java
  Loading external source code and using them internally (by re-compiling or something)

我想在Java中模拟一个'eval',使得函数接收一个String(一些源代码),编译它,运行它,然后回吐返回值。

我知道我可以使用JavaCompiler API编译它,但我不确定实际运行代码的最佳方法。 Runtime.exec对于这个任务来说感觉太重了......每次我运行这个'eval'函数只是为了评估'30 +20'之类的东西时,我不想生成另一个java进程。这将是缓慢且资源密集的。

最后,这必须能够运行任何java代码,因此依赖于Java内部的脚本语言评估器将不会这样做(例如,如果输入是比Java更复杂的Java +20')

任何替代方案?

1 个答案:

答案 0 :(得分:0)

我自己从未这样做过,但您可以编写自己的ClassLoader并将字节码加载到JVM中。这有一个tutorial