LSOpenURLsWithRole()失败,错误为-10810-下载的应用程序无法启动


14

我正在尝试运行从Internet下载的应用程序(例如Jabref),但它似乎无声地失败了。当我尝试通过双击将其打开时,没有任何反应。使用终端时,我收到以下消息:

LSOpenURLsWithRole()失败,文件... / xxxx.app出现错误-10810

我尝试了一些建议,例如更改权限和修改Info.plist文件,但没有任何效果。

因为它是一个Java应用程序,所以我尝试通过终端使用

java -cp“ CLASSPATH”主类

而且效果很好。

只需提一下,我不仅在此应用程序中遇到此错误,而且在其他一些应用程序中也遇到此错误。

提前致谢。

Answers:


8

LSOpenURLsWithRole是用于将文件与程序关联的函数。您双击的文件实际上不是应用程序,而是数据文件。

例如,这是双击文本文档,启动TextEdit程序或另一个关联的应用程序时的方式。

假设已安装它,则需要将其与Java运行时关联。

如果右键单击该文件并选择“获取信息”,则信息窗格中有一个名为“打开方式:”的部分。那应该设置为java运行时。


3

对于来到这里的非Java程序遇到此问题的任何人:尝试运行包含Mach-O可执行文件的.app文件时,我都收到相同的错误消息。尝试直接从包内运行可执行文件(例如Foo.app/Contents/MacOS/bar)给了我一个更好的错误,表明我缺少动态lib依赖项:

dyld: Library not loaded:/usr/local/opt/qt5/lib/QtWidgets.framework/Versions/5/QtWidgets

如果遇到此错误,请尝试尝试。


1

我尝试部署的Java程序也遇到此错误。我无法在第二台Mac上运行它:10.11.6。我到处都在寻找答案,但从未找到答案,所以我将其放在这里以使其他人受益。通过启动系统控制台,我发现了错误消息,即“打开”程序在捆绑包目录中找不到程序“ JavaApplicationStub”。问题是,我的捆绑包正在使用“ JavaAppLauncher”启动。我刚刚从使用旧的Apple JarBundler更改为Oracle AppBundler,以便可以对应用程序进行签名,并且启动程序名称不同。这里的关键是新的捆绑软件(7.1.1版)正在替换旧的捆绑软件(7.1.1版),并且具有相同的应用程序名称。旧的使用JavaApplicationStub启动。

程序的Info.plist属性似乎已被缓存,并且它使用陈旧的值来启动新捆绑包。不知道是否在注销或重新启动时清除了缓存,或者在新版本的OS X中是否已修复了缓存,但是我必须让所有最终用户都能顺利进行此工作。

通过在程序名称中包含版本号来解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.