我正在阅读文档,并创建了一个应用程序包(使用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.
如果进程失败,可以重新创建上述错误。例如,使用以下shell脚本替换JavaAppLauncher会重现该问题:
#!/bin/bash
return -1
所以,我想我必须看看JavaAppLauncher
失败的原因......
答案 0 :(得分:5)
好的 - 它花了一些时间,但有很多问题。最后,我从应用程序捆绑器源重新编译了我自己的JavaAppLauncher,并在Xcode中逐步完成了它(非常有用的文档!)。 https://java.net/projects/appbundler
JDK引用似乎是错误的,因此删除JVM运行时键<key>JVMRuntime</key>
<string>jdk1.7.0_17.jdk</string>
对此有帮助。
Java目录需要位于内容级别,而不是资源。
GUITest.app/
Contents/
Info.plist
PkgInfo
MacOS/
JavaAppLauncher
Resources/
GenericJavaApp.icns
Java/
gui.jar
解决了这些问题之后,尽管有两个单独的应用程序显示相同的diff
s,但其中一个应用程序有效,而另一个显示错误-1080
(!)。删除扩展属性解决了问题:xattr -lr GUITest.app
。
另见包装上的java.net页面: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html