无法使用ProcessBuilder运行程序,从命令行运行正常

时间:2013-05-06 17:01:26

标签: java linux processbuilder

在linux(debian)上,我可以运行这个命令:

/usr/lib/jvm/jdk1.7.0_21/bin/java -jar ~/myjar.jar ".*"

我正在尝试从Java程序运行它,而不是:

ProcessBuilder pb = new ProcessBuilder(java, "-jar", "~/myjar.jar", "\".*\"");

System.out.println(pb.command());按预期打印以下内容:

[/usr/lib/jvm/jdk1.7.0_21/bin/java, -jar, ~/myjar.jar, ".*"]

但是我从程序中得不到相同的输出(它运行但输出看起来好像没有正确考虑".*"参数)。

为什么它不起作用的任何想法?

注意:相同的代码在Windows上运行正常。

2 个答案:

答案 0 :(得分:6)

看起来没有使用glob扩展通配符。您可以改为使用shell:

ProcessBuilder pb = 
       new ProcessBuilder("bash", "-c", "java -jar ~/myjar.jar \".*\"");

或者你可以删除通配符周围的双引号:

ProcessBuilder pb = new ProcessBuilder(java, "-jar", "~/myjar.jar", ".*");

答案 1 :(得分:0)

为。例如获取Android中所有的CPU频率。

ProcessBuilder p = new ProcessBuilder(); p.command("/system/bin/sh","-c","cat sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq ");

相关问题