3

在 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 上运行良好。

4

2 回答 2

7

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

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

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

ProcessBuilder pb = new ProcessBuilder(java, "-jar", "~/myjar.jar", ".*");
于 2013-05-06T17:05:55.217 回答
0

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

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

于 2019-03-28T17:24:56.610 回答