java - 无法使用 Java 运行 linux 命令

标签 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())。有人可以告诉我如何纠正我尝试运行的命令吗?

最佳答案

仔细阅读错误信息:你尝试执行程序/usr/bin/printf %b,这当然不存在。

程序名为/usr/bin/printf

关于java - 无法使用 Java 运行 linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44054364/

相关文章:

java - 计算字母序列的实例

regex - 在最后一个匹配后添加一行和字符

java - 无法从 ProcessBuilder 使用 Bash 的 "-i"选项

linux - 查找和复制具有相同名称但扩展名不同的文件

c - 锁定帧缓冲设备

java - 等待一秒等待按钮点击,如果按钮未点击则调用函数

java - 将 XML 自闭标记替换为空标记

java - 如何在DataTables中使用JSP/表达式语言显示数据?

java - MediaRecorder.GetSurface() 返回 null

当 Linux 内核将页面写回内存映射文件时捕获?