无法使用Java运行linux命令
我正在使用ProcessBuilder在服务器上运行Linux命令:
ProcessBuilder pb = new ProcessBuilder("/usr/bin/printf %b", sendMessage,
URL, " @serendipity | /usr/bin/perl /usr/local/bin/foo/bar -u nagios -s");
我正在尝试广播一条消息,该消息将通过管道传输到一个名为bar的寻呼系统。但是,在服务器上执行jar文件时,我经常会得到以下结果:
java.io.IOException: Cannot run program "/usr/bin/printf %b": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at sms_serendipity.sms_serendipity.SmsSendMessage.sendMessage(SmsSendMessage.java:59)
at sms_serendipity.sms_serendipity.SmsSendMessage.randomizeLinks(SmsSendMessage.java:48)
at sms_serendipity.sms_serendipity.SmsParseWeb.regexHttp(SmsParseWeb.java:103)
at sms_serendipity.sms_serendipity.SmsParseWeb.parseXML(SmsParseWeb.java:77)
at sms_serendipity.sms_serendipity.SmsParseWeb.locateWebAudio(SmsParseWeb.java:44)
at sms_serendipity.sms_serendipity.mainClass.main(mainClass.java:11)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 6 more
这是我第一次使用ProcessBuilder(我也尝试了Runtime.exec()。有人能告诉我如何纠正我试图运行的命令吗
# 1 楼答案
仔细阅读错误消息:您试图执行程序
/usr/bin/printf %b
,但该程序当然不存在该程序称为
/usr/bin/printf
# 2 楼答案
我已经想出了一个办法让它工作。这需要一点实验,但这里是我所做的
我让它将标准输出记录到一个文本文件中,并确认广播正常