2

Java Compiler API を使用すると、実行時にクラスをコンパイルし、その出力 (.class ファイル) をファイル システムに書き込むことができるように思えます。ただし、インメモリ コンパイルはサポートされていません。これは正しいです ?または、この API を使用して (文字列から) メモリ内のクラスをコンパイルし、後でそのようなクラスをインスタンス化することは可能ですか?

(クラスをファイルシステムにコンパイルし、後でカスタムクラスローダーでロードできることは知っていますが、ファイルシステムを通過せずにメモリ内でコンパイルできるかどうか疑問に思っています)。

J2SE のみを使用してメモリ コンパイルでこれを行う別の代替メカニズムはありますか? BeanShell (私がやりたいことができるライブラリ) は、その Web ページで、「将来のある時点」で J2SE に含まれる可能性があると述べていますが、そのJSRのステータスは「休止中」です (それが何を意味するかは関係ありません)。 .

アップデート:

理想的には、これが J2SE のみで実行できるかどうか (または、Java 8 などでこれを実行できる J2SE の機能拡張が期待されるかどうか) を知りたいです。ただし、JDK のインストールを必要とする方法についてのヒントも歓迎します (Evgeniy に感謝します)。

4

2 に答える 2

4

JDK があれば可能です。Java コンパイラは、JDK のみに付属する tools.jar にあります。http://docs.oracle.com/javase/7/docs/api/javax/tools/package-summary.htmlを参照してください。

于 2013-09-22T16:35:59.730 に答える