当前位置: 首页 > 面试题库 >

OS X Java .app捆绑包无法打开其他应用程序?

越学文
2023-03-14
问题内容

我已经为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上搜索此内容,但似乎很不常见或非常具体,我什么也找不到。


问题答案:

我自己回答这个问题,因为问题是我自己设置的。具体来说,这是我使用的捆绑运行时。我在这里的其他问题中写了更深入的答案:

OS X上的Java:如果.app软件包包含JVM捆绑包,则“open”命令将无法运行



 类似资料:
  • 问题内容: 我在新笔记本(Window 7 64位)中下载了新的Android和Eclipse软件包,然后打开了以前在PC中工作的旧文件。打开时,它显示了有关版本API的错误,应该在SDK中修复它Manager,但是当我尝试打开SDK Manager时,它将无法运行,并在控制台中显示此错误。 我该如何解决? 问题答案: 其中有一个名为的批处理文件。它调用以查找潜在的Java位置列表。像这样运行文件

  • 我有一个包在 此文件夹包含: 然后我在中注册: 这样做后,网站根本无法工作。日志上说: PHP致命错误:未捕获错误:在/var/www/html/symproject/app/AppKernel中找不到类“MyCompany\Action\Provider\MyAppProvider\Bundle\MyAppBundle”。php:20\n堆栈跟踪:\n#0/var/www/html/sympro

  • 检测到JavaFX Ant API版本1.3结果:1 init:deps clean:正在更新属性文件:D:\softphone\build\build clean。属性删除目录D:\softphone\build clean:deps jar: 创建dir: D:\softphone\build 正在更新属性文件:D:\softphone\build\build jar。性质 已创建目录:D:\

  • 我还不是一个有经验的OSGi用户,因此我会遇到一些问题。 我正在尝试使用作为外部提供程序,因为我不希望我的包包含所有这些类。 但是,当我运行这组包(my和)时,我得到以下错误: 错误:Bundle org.apache.serviceMix.bundles.hadoop-client[56]错误启动文件:bundles/org.apache.serviceMix.bundles.hadoop-cl

  • 我需要分配在OSGi包的许可使用 } 尽管此权限出现在活动权限列表中,但当我从d:\temp文件夹安装并启动捆绑包时,它会导致一个异常,说明无法解决此问题: 我使用的例子来自《OSGI在行动》一书的第14章,我的osgi实现是Equinox(org . eclipse . OSGI _ 3 . 7 . 2 . v 20120110-1415 . jar),启动OSGi的命令行是 似乎缺少了一些东西

  • 问题内容: 在我的AEM项目的代码中看似无关紧要的更改之后,我的捆绑软件无法解决。检查日志后,我可以看到出现以下错误。 该项目在本地编译得很好,并且只有在容器尝试解决该捆绑包后,该问题才会出现。 我没有在任何更改中添加任何显式依赖项。项目对象模型与以前相同。顾名思义,这是一个核心Java软件包,因此我希望它会被System软件包公开。 我正在运行AEM支持的JDK 7,所以不要指望它与JVM兼容性