java ProcessBuilder 不起作用

标签 java batch-file processbuilder

我正在尝试在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 ProcessBuilder 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114851/

相关文章:

java - 两个 ActionListener 中调用的计数器

batch-file - 批处理脚本: Selecting filename which has multiple dots

batch-file - 从所有用户配置文件复制的批处理文件

batch-file - 创建文件夹,从文件名 torrent 中提取年份,然后重新排列其中的文件

java - Java 的 ProcessBuilder 在哪里寻找执行命令?

java - 任务队列示例.java : Code 403

java - fmt :message default value

java - 当我从 cmd 重定向输出时,为什么输出文件为空?

java - 如何使用 Selenium WebDriver 查找在每个页面加载时动态 ID/名称发生变化的元素

java - 使用 Java (Unix) 中的 Process Builder 在一行中执行 shell 脚本多个命令