1

重複の可能性:
Java での eval の使用
外部ソース コードの読み込みと内部での使用 (再コンパイルなどによる)

関数が文字列(一部のソースコード)を受け取り、コンパイルして実行し、戻り値を返すように、Javaで「評価」をシミュレートしたいと思います。

JavaCompiler API を使用してコンパイルできることはわかっていますが、このようなコードを実際に実行する最善の方法がわかりません。Runtime.exec は、このタスクには重すぎると感じています... 「30+20」などを評価するためだけに、この「eval」関数を実行するたびに、別の Java プロセスを生成したくありません。これは遅く、リソースを大量に消費します。

最後に、これは任意の Java コードを実行できる必要があるため、Java 内のスクリプト言語エバリュエーターに依存することはできません (たとえば、入力が単に '30+20' よりも複雑な Java である場合)。

代替案はありますか?

4

1 に答える 1

0

私はこれを自分で行ったことはありませんが、独自の ClassLoader を作成して、バイトコードを JVM にロードできます。これに関するチュートリアルがあります。

于 2010-12-10T04:15:39.630 に答える