Robert Bienert: Im Perl-Script java-Programm starten

Beitrag lesen

Moin!

[…] Wie kommen denn vom Browser die Antworten auf die Fragen, die das Programm stellt, an selbiges?

DIe Antworten sollten, wenn möglich auch über das Script an das Java-Programm gegeben werden. Wie gesagt, hier handelt es sich um einfeache Konsolenein und -ausgaben.

Das sagst du so einfach! Damit dein Perlprogramm nicht nur aus die Ausgabe deines Javaprogrammes lesen kann, sondern auch Eingaben an dieses weiterreicht, musst du schon eine Schreib-Lese-Pipe zu diesem Öffnen. Wie man das allerdings in Perl bewerkstelligt, weiß ich nicht, aber vielleicht hilft dir Perls perlipc-Handbuch weiter.

my @output=$call;

Du meinst also, dass dieser Aufruf hier fehlschlägt? Wie wäre es dann einmal die Variable $! zu prüfen oder nachzuschauen, was /.../test.sh macht – bist du dir eigentlich sicher, dass test.sh in diesem Verzeichnis, dem Root-Verzeichnis, zu finden ist?

die ... stehen für den genauen Pfad zu test.sh. Und das Script startet das eigentliche Java-Programm und funktioniert per Hand ausgeführt tadellos.

Hast du in einem Perlprogramm einmal $! ausgewertet, was ich geschrieben habe? Diese Variable enthält die Meldung des zuletzt aufgetretenen Fehlers. Es könnte auch daran liegen, dass du per Shell Umgebungsvariablen, z.B. CLASSPATH oder PATH setzt, die im Perlprogramm nicht existieren und deshalb das Javaprogramm muckt. Aber du kannst ja einmal den obigen Aufruf ändern:

my @output=/pfad/zu/java programm;

/pfad/zu/java ist der komplette Pfad deiner Java-VM, normalerweise etwas wie /usr/bin/java; programm ist dabei der Name deines Javaprogrammes – ggf. musst du vorher noch in dessen Verzeichnis wechseln. Damit hättest du den Aufruf per Konsole nachgebaut.

Viele Grüße,
Robert