0

次のコードを使用して、Java から perl スクリプトを実行しようとしています。

    ProcessBuilder script =
    new ProcessBuilder("/opt/alert-ssdb.pl");
    Process tmp =  script.start();

しかし、実行すると返されます

 java.io.IOException: Cannot run program "/opt/alert-ssdb.pl": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
at scripttest.main(scripttest.java:11)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
at java.lang.ProcessImpl.start(ProcessImpl.java:81)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
... 1 more

ファイルについて

ls -l alert-ssdb.pl
-rwxr-xr-x. 1 root root alert-ssdb.pl

スクリプトを引数として /usr/bin/perl/ を実行しようとしましたが、同じ例外で失敗しました。

ただし、/bin/ls およびその他の単純なコマンドは問題なく実行されます。また、スクリプトの最初の行は #!/usr/bin/perl であり、コマンドラインで実行すると機能します

私は何が欠けていますか?

//更新: 全体像は、ストーム ボルトを介してスクリプトを呼び出そうとしていることですが、その時点で失敗します。Pythonスクリプトをボルトとして定義することで、なんとか機能させることができました

 super(python,myscript.py)

(myscript は storm ライブラリをインポートします)、myscript から perl スクリプトを呼び出します。まだ試していませんが、perl スクリプトをストーム ボルトに変更すると、うまく動作すると思います。

4

1 に答える 1