Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用exec或java中的defaultexecutor的IOException_Java_Command Line - Fatal编程技术网

使用exec或java中的defaultexecutor的IOException

使用exec或java中的defaultexecutor的IOException,java,command-line,Java,Command Line,例外情况 /usr/sbin/asterisk -rx "dongle sms dongle0 km FROM> some address TO> some address 20 kms. Please respond in 2 minutes, ok, yes, 1 or book. Else ignore" java.io.IOException: Cannot run program "/usr/sbin/asterisk -rx "dongle sms dongle0

例外情况

/usr/sbin/asterisk -rx "dongle sms dongle0    km FROM> some address TO> some address 20 kms. Please respond in 2 minutes, ok, yes, 1 or book. Else ignore"
java.io.IOException: Cannot run program "/usr/sbin/asterisk -rx "dongle sms dongle0 " (in directory "."): java.io.IOException: error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
    at java.lang.Runtime.exec(Runtime.java:610)
    at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
    at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:254)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:319)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:160)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:147)
    at Test.main(Test.java:33)
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)
    ... 7 more
/usr/sbin/asterisk-rx“加密狗短信加密狗0公里从>某个地址到>某个地址20公里。请在2分钟内回复,确定,是,1或预订。否则忽略”
java.io.IOException:无法运行程序“/usr/sbin/asterisk-rx“加密狗sms加密狗0”(在目录“.”):java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
位于java.lang.Runtime.exec(Runtime.java:610)
位于org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
位于org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:254)
位于org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:319)
位于org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:160)
位于org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:147)
at Test.main(Test.java:33)
原因:java.io.IOException:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess(UNIXProcess.java:164)
在java.lang.ProcessImpl.start(ProcessImpl.java:81)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
…还有7个
代码

publicstaticvoidmain(字符串[]args){
CommandLine CommandLine=newcommandline(“/usr/sbin/asterisk-rx\“加密狗sms加密狗0”);
DefaultExecutor executor=新的DefaultExecutor();
字符串cmd[]=新字符串[8];
cmd[0]=“”;//电话号码
cmd[1]=“”;//与客户的距离
cmd[2]=“距离>”的公里数;
cmd[3]=“某个地址”;
cmd[4]=“至>”;
cmd[5]=“某个地址”;
cmd[6]=“20”;
cmd[7]=“kms。请在2分钟内回复,好的,是的,1或book。否则忽略\”;
试试{
for(int i=0;i
我试过了

命令行命令行=新命令行(“/bin/sh-c echo | sudo/usr/sbin/asterisk-rx \“加密狗sms加密狗0”);我得到了与/bin/sh完全相同的异常

CommandLine CommandLine=new CommandLine(“/bin/dash-c echo | sudo/usr/sbin/asterisk-rx \“加密狗sms加密狗0”);我得到了与/bin/dash完全相同的异常


使用CommandAction和CommandResponse修复了它

ManagerConnection c = null;
    CommandAction commandAction;
    CommandResponse response = null;
    try {
        c = new ManagerConnectionFactory("127.0.0.1", 5038, "username", "password")
                .createManagerConnection();
        c.login();
        commandAction = new CommandAction(command);
        response = (CommandResponse) c.sendAction(commandAction);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (TimeoutException e) {
        e.printStackTrace();
    } catch (AuthenticationFailedException e) {
        e.printStackTrace();
    }
    for (String line : response.getResult()) {
        System.out.println(line);
    }
manager.conf应具有以下内容

[username]
secret=password
read=system,call,log,verbose,agent,command,user,originate
write=system,call,log,verbose,agent,command,user,originate
permit=127.0.0.1/255.255.255.0

您使用的是apache.commons吗?如果是,请使用addArgument添加-rx\“加密狗sms加密狗0,而不是直接在构造函数中传递它们
[username]
secret=password
read=system,call,log,verbose,agent,command,user,originate
write=system,call,log,verbose,agent,command,user,originate
permit=127.0.0.1/255.255.255.0