如何解决OS X Java .app捆绑包无法打开其他应用程序?
我自己回答这个问题,因为问题是我自己设置的。具体来说,这是我使用的捆绑运行时。我在这里的其他问题中写了更深入的答案:
OS X上的Java:如果.app软件包包含JVM捆绑包,则“open”命令将无法运行
解决方法
我已经为OS X编写了Java
SWT应用程序,将其导出为.jar并将其捆绑到.app中。除了我的应用程序中的关键部分之外,其他所有功能都按预期工作。它需要打开其他应用程序。
我试过Runtime.exec();
,以及ProcessBuilder
要做到这一点,调用open
命令的其他应用程序,我需要对发布。从Eclipse或通过Terminal启动导出的.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可能会忽略它?
我也尝试过在Google上搜索此内容,但似乎很不常见或非常具体,我什么也找不到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。