[英]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.