Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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
使用Java运行Linux命令时出现问题?_Java_Linux - Fatal编程技术网

使用Java运行Linux命令时出现问题?

使用Java运行Linux命令时出现问题?,java,linux,Java,Linux,我正在使用Java运行命令,但没有得到任何输出 Process p; Runtime run = Runtime.getRuntime(); String s1 = "queryData 1005017 --format '\"%s" scope'"; System.out.println("Command is " + s1); try { p = run.exec(s1); BufferedReader br = n

我正在使用Java运行命令,但没有得到任何输出

Process p;
Runtime run = Runtime.getRuntime();  
    String s1 = "queryData 1005017 --format '\"%s" scope'";

    System.out.println("Command is " + s1);


    try {  

        p = run.exec(s1);  
        BufferedReader br = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
            while ((s = br.readLine()) != null)
                System.out.println("line: " + s);
        p.getErrorStream();  
        p.waitFor();

    }  

而同一命令-->queryData 1005017--format'%s“scope'运行时没有任何问题。想知道我在处理双引号或%符号时是否遗漏了任何东西

您没有正确转义内部引号:

String s1 = "queryData 1005017 --format '\"%s" scope'";
            ^--start java string             ^--end java string
                                               ^^^^^ what's this mean to java?
你可能想要

String s1 = "queryData 1005017 --format '\"%s\" scope'";
                                             ^--note this

相反。

您没有正确地转义内部引号:

String s1 = "queryData 1005017 --format '\"%s" scope'";
            ^--start java string             ^--end java string
                                               ^^^^^ what's this mean to java?
你可能想要

String s1 = "queryData 1005017 --format '\"%s\" scope'";
                                             ^--note this

相反。

尝试不要使用字符串从Java启动进程。正确的方法是使用:


尝试不要使用字符串从Java启动进程。正确的方法是使用:


好吧,这不会编译,OP说它不会返回输出。也许这只是一个输入错误。好吧,这不会编译,OP说它不会返回输出。也许这只是一个输入错误。假设您丢失的反斜杠只是一个输入错误(您的程序是否编译?),您是否尝试在
waitFor
之后检查
p.exitValue()
,查看它是否成功终止?是的,这是输入错误。我得到的退出值是exit:1So,它退出失败。尝试读取错误流而不是输入流,看看它会给您带来什么样的错误。假设您丢失的反斜杠只是一个输入错误(您的程序是否编译?),您是否尝试在
waitFor
之后检查
p.exitValue()
,看看它是否成功终止?是的,这是输入错误。我得到的退出值是exit:1So,它退出失败。尝试读取错误流而不是输入流,看看它会给您带来什么样的错误。谢谢。好的,谢谢。这就解决了。