OSX Java App Bundle 适用于一个 Mac,但不适用于另一个。
OSX Java App Bundle works on one Mac, but not on another.
我已经编写了一个 java 应用程序,并使用 Oracle 的 appbundler ANT 任务将其打包到一个 OSX 应用程序包中。该应用程序包在其开发的机器(MacBook Pro)上运行良好,但当我将其复制到我的 MacBook Air 时,它无法启动并显示错误 "Application 'MyApp' cannot be opened"。根本没有其他诊断或信息。
两台 Mac 都是 运行 Yosemite 的最新版本,都在安全首选项中启用了 "Run apps from any location",并且都安装了 Java 1.8。如果我将 Jars 直接复制到 MacBook Air,然后双击主 class Jar,应用程序会正确启动 - 所以这与捆绑有关,而不是 java 应用程序本身。
知道从哪里开始调试吗?
您是否有可能在一台或两台 Mac 上安装了多个版本的 Java?如果是这样,您是否检查过 JAVA_HOME 的设置? /usr/libexec/java_home 脚本可用于确定您有哪些不同的 Java 安装,例如
java_home -V
The app bundle works fine on the machine it was developed on (a MacBook Pro), but when I copy it to my MacBook Air it fails to launch
那么问题很可能出在您在两台机器之间复制应用程序包的方式 - 无论您使用何种机制进行复制,您都需要确保它保留了包中文件的权限设置,特别是 Contents/MacOS
中的可执行存根在目标系统上仍然是可执行的。如果将 .app
打包到 .zip
文件中(右键单击 Finder 中的应用程序,"Compress (name of app)" 并复制 zip 文件而不是 .app
目录本身,那么应该保留权限。
我已经编写了一个 java 应用程序,并使用 Oracle 的 appbundler ANT 任务将其打包到一个 OSX 应用程序包中。该应用程序包在其开发的机器(MacBook Pro)上运行良好,但当我将其复制到我的 MacBook Air 时,它无法启动并显示错误 "Application 'MyApp' cannot be opened"。根本没有其他诊断或信息。
两台 Mac 都是 运行 Yosemite 的最新版本,都在安全首选项中启用了 "Run apps from any location",并且都安装了 Java 1.8。如果我将 Jars 直接复制到 MacBook Air,然后双击主 class Jar,应用程序会正确启动 - 所以这与捆绑有关,而不是 java 应用程序本身。
知道从哪里开始调试吗?
您是否有可能在一台或两台 Mac 上安装了多个版本的 Java?如果是这样,您是否检查过 JAVA_HOME 的设置? /usr/libexec/java_home 脚本可用于确定您有哪些不同的 Java 安装,例如
java_home -V
The app bundle works fine on the machine it was developed on (a MacBook Pro), but when I copy it to my MacBook Air it fails to launch
那么问题很可能出在您在两台机器之间复制应用程序包的方式 - 无论您使用何种机制进行复制,您都需要确保它保留了包中文件的权限设置,特别是 Contents/MacOS
中的可执行存根在目标系统上仍然是可执行的。如果将 .app
打包到 .zip
文件中(右键单击 Finder 中的应用程序,"Compress (name of app)" 并复制 zip 文件而不是 .app
目录本身,那么应该保留权限。