Java 让ProcessBuilder(或一般的命令执行)使用JRE在Mac上工作?

Java 让ProcessBuilder(或一般的命令执行)使用JRE在Mac上工作?,java,macos,command-line,command,Java,Macos,Command Line,Command,我这样做: ProcessBuilder pb = new ProcessBuilder("java", "-jar", updater.getAbsolutePath(), downStuff.getAbsolutePath(), actStuff.getAbsolutePath(), toRunAfter.getAbsolutePath()); pb.start(); …将3个字符串文件路径作为参数传递。在Windows上运行得很好,但Mac一直说:“没有Java运行时,正在请求安装。”

我这样做:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", updater.getAbsolutePath(), downStuff.getAbsolutePath(), actStuff.getAbsolutePath(), toRunAfter.getAbsolutePath());
pb.start();
…将3个字符串文件路径作为参数传递。在Windows上运行得很好,但Mac一直说:“没有Java运行时,正在请求安装。”

我是否需要将JDK安装到客户端的机器上才能让这个简单的命令正常工作。。。或者,在传递参数时,是否有其他方法可以通过编程方式运行外部jar文件


因为现在看来我必须将这三行文本保存到一个文件中,因为Oracle和Apple没有一起解决他们的s**t…

我不知道为什么
java
可执行文件不在您的执行路径中,但我知道应用程序更新应该使用Web Start交付。您需要做的就是将更新的版本放在服务器上;永远不需要显式运行任何外部程序。是否可以在没有web浏览器的情况下使用webstart?Jnlp支持似乎越来越少了。此外,我需要用户选择是否要更新。是的,尽管出于某种原因,文档从1.5开始就没有包含在Java中:根据您的建议,我成功地将应用程序放到web上并下载jnlp,然后用它运行。。。但它似乎下载了应用程序,然后从本地缓存中运行。当我在应用程序中做一些更改,上传它,甚至从新生成的jnlp运行它时,旧版本就会启动。有没有办法强制jnlp在每次运行之前尝试下载新版本?您可以将
作为
元素的子元素放入jnlp文件中。默认值为check=“timeout”,但由于某些原因,这可能还不够。