使用Java运行Linux命令时出现问题?
我正在使用Java运行命令,但没有得到任何输出使用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
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,它退出失败。尝试读取错误流而不是输入流,看看它会给您带来什么样的错误。谢谢。好的,谢谢。这就解决了。