Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Man kann mit Runtime.exec(..) einen Prozess starten. Diese Methode gibt ein Objekt der Klasse Process zurück. Meine Frage: Wie komme ich an das eigene Prozess-Objekt? Die Klasse Thread hat die Methode Thread.currentThread(). Wo ist "currentProcess()"?
Ich arbeite gerade mit Groovy und ich möchte die Groovy-Shell in einem gescheiten Swing-Fenster ausführen lassen. Ich habe jetzt das meiste fertig. Ich musste die Sache verwerfen, die Groovy-Shell in einem eigenen Prozess zu starten, denn dann könnten die Shell und die Hauptanwendung nicht auf dieselben Objekte zugreifen. Bei Prozessen könnten man aber wenigstens die Streams vernünftig umleiten, sodass es fluppt.
Die Groovy-Shell läuft bei mir in einem eigenen Thread. Die Klasse org.codehaus.groovy.tools.shell.Groovysh erlaubt es, dass man die Streams reinreicht. Das sieht bei im Java-Code so aus:
Java:
final IO io = new IO(cta.getIn(), cta.getOut(), cta.getErr());
final Groovysh gsh = new Groovysh(io);
"cta" ist ein Swing-Textfenster. Dort kann man die drei Streams abgreifen und der Groovy-Shell übergeben.
Das funktioniert eigentlich gut. Gebe ich 4+4 ein, berechnet mir die Groovy-Shell das richtige Ergebnis und gibt es zurück. Gibt's einen Fehler, wird auch das richtig im Fenster wiedergegeben (das dürfte über den vermeintlichen STDERR-Kanal laufen). Aber wenn ich println("Hallo Welt") aufrufe, dann gibt er das nicht zurück. Das Resultat erscheint dann in der Console vom Eclipse. Da wird wohl der System.out vom Prozess verwendet. ;(