我正在阅读文档,并创建了一个应用程序捆绑包(使用Finder,Terminal和TextEdit),如下所示:
GUITest.app/
Contents/
Info.plist
PkgInfo
MacOS/
JavaAppLauncher
Resources/
GenericJavaApp.icns
Java/
gui.jar
但是,当我尝试在查找程序上双击时,该图标上带有“禁止进入”的标志,而当我双击时,会得到:
The application "GUITest" can't be opened. -10810
如果我尝试手动启动JavaAppLauncher:
./GUITest.app/Contents/MacOS/JavaAppLauncher
我得到一个带有“JRELoadError
”的对话框Info.plist看起来非常简单。
PkgInfo只是
AAPL????
,而JavaAppLauncher则来自http://java.net/projects/appbundler/downloads/download/appbundler-1.0.jar这些问题可能归结为不良的
Info.plist
或其他问题吗?这是Info.plist:
<?xml version="1.0" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>JavaAppLauncher</string>
<key>CFBundleIconFile</key>
<string>GenericApp.icns</string>
<key>CFBundleIdentifier</key>
<string>gui.GUITest</string>
<key>CFBundleDisplayName</key>
<string>GUITest</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>GUITest</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSHumanReadableCopyright</key>
<string>©xirt, 2014</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>JVMRuntime</key>
<string>jdk1.7.0_17.jdk</string>
<key>JVMMainClassName</key>
<string>main.GUITest</string>
<key>JVMOptions</key>
<array>
</array>
<key>JVMArguments</key>
<array>
</array>
</dict>
</plist>
注意:通过删除com.apple.quarantine扩展属性来删除禁止进入标志:
xattr -d com.apple.quarantine JavaAppLauncher
但是问题仍然存在:$ open ./GUITest.app
LSOpenURLsWithRole() failed with error -10810 for the file /Users/.../GUITest.app.
如果该过程完全失败,则可以重新创建以上错误。例如,用以下外壳程序脚本替换JavaAppLauncher会重现此问题:
#!/bin/bash
return -1
所以,我想我必须看看
JavaAppLauncher
为什么失败... 最佳答案
好的-进行了一些计算,但是有很多问题。最终,我从应用程序捆绑程序源重新编译了我自己的JavaAppLauncher,并在Xcode中逐步进行了调试(有关有用的文档,这非常有用!)。
https://java.net/projects/appbundler
<key>JVMRuntime</key><string>jdk1.7.0_17.jdk</string>
很有帮助。 GUITest.app/
Contents/
Info.plist
PkgInfo
MacOS/
JavaAppLauncher
Resources/
GenericJavaApp.icns
Java/
gui.jar
diff
,但一个工作,而另一个显示错误-1080
(!)。删除扩展属性可以解决问题:xattr -lr GUITest.app
。 另请参见包装上的java.net页面:
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html