OS X Java.appbundle无法打开其他应用程序



我已经为OS X编写了一个Java SWT应用程序,将其导出为.jar并将其绑定到.app中。除了应用程序中的一个关键部分外,其他一切都能正常工作;它需要打开其他应用程序。

我已经尝试过Runtime.exec();ProcessBuilder,在我需要启动的其他应用程序上调用open命令。这在Eclipse中运行得非常好,或者如果我通过终端启动导出的.jar。然而,当双击.app.启动时,它确实不起作用

我想知道这是我的错误,还是Java或OS X的限制。因为Mac应用程序是沙盒的(据我所知),这可能就是为什么在应用程序中调用open什么都不做的原因吗?

我使用了两种方法来打开我需要的应用程序。这是一款Steam游戏,但也是零售版,因此可以通过应用程序本身或使用steam://协议推出。在我的代码中,我尝试了以下操作:

ProcessBuilder pb = new ProcessBuilder("open", "steam://rungameid/57300//");
pb.start();

ProcessBuilder pb = new ProcessBuilder("open", appDir);
pb.start();

appDir是一个字符串,其中包含我希望启动的.app捆绑包的路径。

有什么想法吗?为什么这在Mac应用程序捆绑包中失败了,但在Eclipse/Jar中运行良好?使用控制台运行应用程序(通过捆绑包中的bash脚本)不会返回任何错误,所以在我看来Java运行命令很好,但OS X可能会忽略它?

我也试过在谷歌上搜索这个,但它似乎非常罕见,或者只是非常具体,我什么都找不到。

我自己回答这个问题,因为问题出在我自己的设置上。特别是我使用的捆绑运行时。我在这里的另一个问题中写了一个更深入的答案:

OS X上的Java:如果.app包包含JVM捆绑包

,"open"命令将不会运行

如果steam:是已注册的URL类型,则可以使用org.eclipse.swt.program.Program#launch(String)。例如:

org.eclipse.swt.program.Program.launch("steam://rungameid/57300//");

相关内容

  • 没有找到相关文章

最新更新