3

Ant Java タスクforkパラメーターを提供します。これは、定義により、「有効にすると、別の VM でクラスの実行をトリガーします」。大量のデータを扱っているため、このパラメーターを設定することで、Java ヒープ スペースが不足することを回避できました。
Java クラスを介して同じことができるようにしたいと考えています。が提供する機能を実現する最善の方法は何forkですか?

4

3 に答える 3

8

別の Java プロセスを実行します。たとえば、 ProcessBuilder クラスを使用します。

http://java.sun.com/javase/6/docs/api/java/lang/ProcessBuilder.html

必要な数のワーカー プロセスを実行できます。別のメイン クラスを持ち、そのメイン クラスからタスクを実行し、タスクが完了したら終了するようにします。

それらのクラスパスと、システム上の Java バイナリの場所を把握する必要がありますが、それは可能です。

Process.waitFor() を介して完了したときに通知を受けることもできると思います。

于 2009-05-13T10:46:04.537 に答える
3

antソースコードを見ると、forkistrueの場合、タスクをラップするだけでExecute、最終的に呼び出されるコードは

Runtime.getRuntime().exec(cmd, env);

および のソース コードをダウンロードして確認するorg.apache.tools.ant.taskdefs.Javaorg.apache.tools.ant.taskdefs.Execute、プラットフォームに依存しない方法で実行する実行可能ファイルの場所を見つけるための優れたヒントが得られます。

于 2009-05-13T12:06:04.813 に答える
0

Ant API を直接使用できると思います...Ant は Java クラスで直接使用できます。Javadoc はバイナリ配布で入手できます。

于 2009-05-13T10:51:40.503 に答える