簡體   English   中英

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");
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM