我正在尝试使用以下代码从 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 脚本修改为风暴螺栓,它将运行良好。