无法使用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上工作正常。

Solutions Collecting From Web of "无法使用ProcessBuilder运行程序,从命令行运行良好"

看起来通配符不是使用glob扩展的。 你可以使用shell来代替:

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

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

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