Ich lese Runtime.getRuntime().exec("perl script.pl")
ist eine Option, aber ist das der beste Weg, es zu tun?
Ich brauche eine Antwort von diesem Skript, daher muss ich in einigen Fällen die Rückgabe des Skripts lesen, obwohl ich es aus einer Textdatei in anderen Fällen lesen könnte.
Wie auch immer, ist exec()
eine gute Möglichkeit, ein Perl-Skript von Java aus aufzurufen? Ich sollte beachten, ich arbeite an einer Java-Web-Anwendung, so dass Sicherheit ein Problem ist hier.
Sie können Runtime
.getRuntime()
.exec()
oder verwenden Sie die Prozess-API .
Mit der Process API können Sie die Ausgabe des Skripts abrufen, sodass Sie beide kommunizieren können.
exitValue()
und < a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html#getInputStream%28%29"> getInputStream()
scheint das zu sein, was Sie brauchen .
Dies skizziert, wie man es ziemlich elegant macht, obwohl es mehr Anstrengung als es wert ist: Ссылка
Übersicht:
Von JPL gut unterstützt, aber es ist ein komplizierter Prozess:
Der JPL-Präprozessor analysiert die JPL-Datei und generiert C-Code-Wrapper für Perl-Methoden. Es erzeugt auch Java- und Perl-Quelldateien.
Der C-Compiler kompiliert den Wrapper und verknüpft ihn mit der gemeinsam genutzten Bibliothek libPerlInterpreter.so, wodurch eine gemeinsam genutzte Bibliothek für den Wrapper entsteht.
Der Java-Compiler kompiliert die Java-Quelldatei, die native Methoden zum Laden des Wrappers verwendet.
Der Wrapper verbindet den Java-Code mit dem Perl-Code in der Perl-Quelldatei.
Glücklicherweise vereinfacht eine generische Makefile.PL den Prozess. Dies ist ein Perl-Skript, das ein Makefile für Sie generiert.
exec () ist wahrscheinlich die beste Option und Sie können den Rückgabewert mit exitValue () . Vielleicht interessiert Sie auch Inline :: Java .
-John