使用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 = 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“运行没有任何问题。 想知道是否在处理双引号或%符号时丢失了任何内容?

Solutions Collecting From Web of "使用Java运行Linux命令时出现问题?"

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

 p = new ProcessBuilder(Arrays.asList( "queryData", "1005017", "--format", "\"%s\" scope")).start(); 

你没有正确地逃避内部报价:

 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 

代替。