Java-Äquivalent von Gabel in Java Aufgabe von Ant?
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?
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.