Ошибка LSOpenURLsWithRole () с ошибкой -10810 - Загруженное приложение не запускается

14

Я пытаюсь запустить приложение, загруженное из Интернета (например, Jabref), но кажется, что оно молча терпит неудачу. Когда я пытаюсь открыть его двойным щелчком, ничего не происходит. Когда я использую терминал, я получаю следующее сообщение:

Сбой LSOpenURLsWithRole () с ошибкой -10810 для файла ... / xxxx.app

Я попробовал несколько предложений, которые я нашел здесь, такие как изменение прав доступа и изменение файла Info.plist, но ничего не работает.

Поскольку это приложение Java, я попытался запустить его через терминал, используя

java -cp "CLASSPATH" ГЛАВНЫЙ КЛАСС

и работает нормально.

Просто упомянуть, что я получаю эту ошибку не только с этим приложением, но и для нескольких других приложений.

Заранее спасибо.

стигма
источник

Ответы:

8

LSOpenURLsWithRole - это функция, которая используется для связи файла с программой. Файл, по которому вы дважды щелкаете, на самом деле не приложение, а файл данных.

Так, например, при двойном щелчке текстового документа запускается программа TextEdit или другое связанное приложение.

Вам нужно связать его со средой исполнения Java, предполагая, что она установлена.

Если щелкнуть правой кнопкой мыши файл и выбрать «Получить информацию», на информационной панели появится раздел «Открыть с помощью:». Это должно быть установлено на время выполнения Java.

Темный рыцарь
источник
3

Для тех, кто приходит сюда, кто видит эту проблему для не-Java-программы: я получал то же сообщение об ошибке при попытке запустить файл .app, который содержит исполняемый файл Mach-O. Попытка запустить исполняемый файл непосредственно из пакета (например Foo.app/Contents/MacOS/bar) дала мне гораздо лучшую ошибку, указывающую на то, что я пропустил динамическую зависимость от lib:

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

Что-то попробовать, если вы видите эту ошибку.

AndrewJC
источник
1

Я также столкнулся с этой ошибкой в ​​программе Java, которую пытался развернуть. Я не мог заставить его работать на моем втором Mac: 10.11.6. Я везде искал ответ, но так и не нашел его, поэтому я выкладываю его здесь, чтобы другие могли извлечь из него пользу. Запустив системную консоль, я обнаружил сообщение об ошибке, что «открытой» программе не удалось найти программу «JavaApplicationStub» в комплекте содержимого. Проблема в том, что мой пакет использовал «JavaAppLauncher» для запуска. Я только что перешел от использования старого Apple JarBundler к Oracle AppBundler, чтобы я мог подписать приложение, и название программы запуска другое. Ключевым моментом здесь является то, что новый пакет (версия 7.1.1) заменял старый (версия 7.1.0) и имел то же имя приложения. Старый использовал JavaApplicationStub для запуска.

Похоже, что свойства Info.plist для программы были кэшированы, и она использовала устаревшие значения для запуска нового пакета. Не знаю, очищается ли кэш при выходе из системы или перезагрузке, или это исправлено в более новых версиях OS X, но мне нужно, чтобы это работало плавно для всех конечных пользователей.

Я обошел проблему, включив номер версии в название программы.

wjrl
источник