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 に答える