java ProcessBuilder 不工作
java ProcessBuilder doesn't work
我正在尝试在 java 中执行批处理文件。
我的来源如下:
List<String> comm = new ArrayList<String>();
comm.add("cmd");
comm.add("c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat");
comm.add("-d");
comm.add("C:\Users\cointreau\workspace\counter\src\Counter.java");
comm.add("-f");
comm.add("xml");
comm.add("-R");
comm.add("java-codesize");
comm.add("-r");
comm.add("C:\Users\cointreau\workspace\counter\report.xml");
ProcessBuilder probuilder = new ProcessBuilder( comm );
Process process = probuilder.start();
//Read out dir output
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
//Wait to get exit value
try {
int exitValue = process.waitFor();
System.out.println("\n\nExit Value is " + exitValue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
原来的命令行是这样的,
c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat -d C:\Users\cointreau\workspace\counter\src\Counter.java -f xml -R java-codesize -r C:\Users\cointreau\workspace\counter\report.xml`
pmd.bat
是我要执行的批处理文件,其余的只是bat文件的参数。
我能看到的唯一输出是exit Value is 1
。
当我在 cmd 中执行此命令行时,它运行正常,但在我的 java 源中运行不正常。
我该怎么办?
提前感谢您的帮助。
尝试添加/C
选项来执行批处理命令
comm.add("cmd");
comm.add("/c");
comm.add("c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat");
...
我正在尝试在 java 中执行批处理文件。
我的来源如下:
List<String> comm = new ArrayList<String>();
comm.add("cmd");
comm.add("c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat");
comm.add("-d");
comm.add("C:\Users\cointreau\workspace\counter\src\Counter.java");
comm.add("-f");
comm.add("xml");
comm.add("-R");
comm.add("java-codesize");
comm.add("-r");
comm.add("C:\Users\cointreau\workspace\counter\report.xml");
ProcessBuilder probuilder = new ProcessBuilder( comm );
Process process = probuilder.start();
//Read out dir output
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
//Wait to get exit value
try {
int exitValue = process.waitFor();
System.out.println("\n\nExit Value is " + exitValue);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
原来的命令行是这样的,
c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat -d C:\Users\cointreau\workspace\counter\src\Counter.java -f xml -R java-codesize -r C:\Users\cointreau\workspace\counter\report.xml`
pmd.bat
是我要执行的批处理文件,其余的只是bat文件的参数。
我能看到的唯一输出是exit Value is 1
。
当我在 cmd 中执行此命令行时,它运行正常,但在我的 java 源中运行不正常。
我该怎么办?
提前感谢您的帮助。
尝试添加/C
选项来执行批处理命令
comm.add("cmd");
comm.add("/c");
comm.add("c:/Users/cointreau/workspace/pmd-bin-5.3.2/pmd-bin-5.3.2/bin/pmd.bat");
...