2010-12-10 135 views
1

可能重複:
using eval in Java
Loading external source code and using them internally (by re-compiling or something)運行Java代碼從Java內部

我想模擬Java中的 'EVAL' 使得函數以一個字符串(一些源代碼),編譯它,運行它,並返回返回值。

我知道我可以使用JavaCompiler API進行編譯,但我不確定實際運行代碼的最佳方式。 Runtime.exec感覺這個任務太重了......我不想在每次運行這個'eval'函數來評估'30 +20'或其他東西時產生另一個java進程。這將是緩慢和資源密集型的。

最後,必須能夠運行任何Java代碼,因此依靠腳本語言評估Java裏面不會做(例如,如果輸入的是更爲複雜的Java不僅僅是'30 +20' )

任何替代品?

+0

也可能dup [我怎樣才能動態調用Java代碼?](http://stackoverflow.com/q/588242/139010) – 2010-12-10 04:17:39

回答

0

我自己從來沒有這樣做過,但是您可以編寫自己的ClassLoader並將字節碼加載到JVM中。這裏有一個tutorial