Frage

Ant Java Aufgabe bietet fork Parameter, die per Definition "wenn die Klasse Ausführung in einer anderen VM aktiviert löst" . Da wir mit einer großen Menge von Daten zu tun haben, Einstellung dieser Parameter gespeichert uns vom Laufen aus Java Heap-Speicher.
Wir wollen in der Lage, das gleiche durch eine Java-Klasse zu tun. Was wäre der beste Weg, um die Funktionalität zu erreichen, wie durch fork zur Verfügung gestellt?

War es hilfreich?

Lösung

Führen Sie eine andere Java-Prozess. Durch die Verwendung von Process Klasse, zum Beispiel.

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

Sie können so viele Arbeitsprozesse laufen wie Sie wollen. Machen Sie sie mit einem separaten Hauptklasse, machen ihre Aufgaben aus dieser Hauptklasse und quiting, wenn ihre Aufgabe abgeschlossen ist.

Sie müssen auf ihre Classpath herauszufinden, und die Lage von Java-Binärdatei auf dem System, aber das ist machbar.

Ich glaube, Sie können auch benachrichtigt werden, wenn sie über Process.waitFor vervollständigen ().

Andere Tipps

Wenn Sie an der ant Quellcode schauen, wenn fork true ist, dann ist es nur eine Execute Aufgabe wickelt und schließlich der Code, der aufgerufen wird, ist

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

Das Herunterladen und für org.apache.tools.ant.taskdefs.Java und org.apache.tools.ant.taskdefs.Execute werden Sie bei der Suche nach dem Standort des ausführbaren einigen großen Zeiger auf den Quellcode, einen Blick in einer plattformunabhängige Art und Weise ausgeführt werden, etc.

Ich glaube, Sie direkt auf den Ant-API verwenden können ... Ant kann direkt in einer Java-Klasse verwendet werden. Die Javadoc ist in ihrer binären Verteilung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top