簡體   English   中英

ProcessBuilder找不到Perl

[英]ProcessBuilder can't find perl

我正在嘗試使用以下代碼從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導入風暴庫),然后從myscript中調用perl腳本。 我還沒有嘗試過,但是我想,如果我將perl腳本修改為風暴螺栓,它將很好地運行。

嘗試改變

    new ProcessBuilder("/opt/alert-ssdb.pl");

至:

    new ProcessBuilder("/usr/bin/perl", "/opt/alert-ssdb.pl");

過去的經驗是,使用ProcessBuilder時,並非所有來自外殼的環境變量都存在。

編輯以反映@dcsohl的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM