1

可能的重复:
在 Java 中使用 eval
加载外部源代码并在内部使用它们(通过重新编译或其他方式)

我想在 Java 中模拟一个“eval”,以便该函数接受一个字符串(一些源代码),编译它,运行它,然后返回返回值。

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

最后,它必须能够运行任何 Java 代码,因此依赖 Java 内部的脚本语言评估器是行不通的(例如,如果输入是比“30+20”更复杂的 Java)

有什么选择吗?

4

1 回答 1

0

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

于 2010-12-10T04:15:39.630 回答