負荷外部ソースコードを使用しての内容により再コンパイor something)
-
22-09-2019 - |
質問
があるので、使用を外部に格納されsourcecodeおよび載荷では、Java programmで使用できるのですか?
したいと思っているプログラムを変更することができずに編集の完全なソースコードすることも可能な編集す。もう一つの利点は、変更することができま部品のコードのようにします。
もちろん私タできるデータを送信することはできるのではないかと考えて、固定ソースプログラムです。
もちろんのでよりも速く、純粋な通訳システム。
そしてもらえると助かりますし、またはこのように追加の作成これらの外部ソースコード部品のprogramm後す。
よろしくお願いし,アンドレアス:)
解決
あなたが必要 javax.tools APIこのためを。したがって、あなたはJDKが仕事にそれを得るために設置し、少なくとも持っている(とJREの代わりにそれにあなたのIDEのポイントを聞かせて)する必要があります。ここでは基本的なキックオフの例を示します(適切な例外なく、ちょうど取り扱いコードする基本的な例は、以下に不透明にするために、の咳の):
public static void main(String... args) throws Exception {
String source = "public class Test { static { System.out.println(\"test\"); } }";
File root = new File("/test");
File sourceFile = new File(root, "Test.java");
Writer writer = new FileWriter(sourceFile);
writer.write(source);
writer.close();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() });
Class<?> cls = Class.forName("Test", true, classLoader);
}
テストソースコードの静的イニシャライザによって行われるように、これは、STDOUTにtest
を印刷しなければなりません。これらのクラスは、クラスパスにすでに存在する特定のインターフェイスを実装している場合また、使用がより簡単だろう。そうしないと、関与する必要があるアクセスすると、メソッド呼び出しリフレクションAPIする /フィールドます。
他のヒント
Java6以降までのアクセスコンパイラを通して、javax.ツールパッケージです。ToolProvider.getSystemJavaCompiler()を使 javax.ツールです。JavaCompiler, る設定をすることができるコンパイルす。ご利用の場合は以前のバージョンのJavaできるもので、内部com.ます。ツールです。javac.メインインタフェースだが、もしくは柔軟性があります。
Java6のは、スクリプトAPIを持っています。私はJavaScriptを使用して、それを使用しましたが、私はあなたがそれが同様に外部のJavaコードをコンパイルすることができます信じています。
http://java.sun.com/developer/technicalArticles/ J2SE /デスクトップ/スクリプト/ の
編集:ここではより関連性のリンクは次のとおりです。 "動的ソース" Javaアプリケーションのコードの