Błąd LSOpenURLsWithRole () z błędem -10810 - Pobrana aplikacja nie uruchamia się

14

Próbuję uruchomić aplikację pobraną z Internetu (np. Jabref), ale wygląda na to, że zawiesza się po cichu. Kiedy próbuję go otworzyć, klikając dwukrotnie, nic się nie dzieje. Kiedy korzystam z terminala, pojawia się następujący komunikat:

Błąd LSOpenURLsWithRole () z błędem -10810 dla pliku ... / xxxx.app

Wypróbowałem kilka sugestii, które tu znalazłem, takich jak zmiana uprawnień i modyfikacja pliku Info.plist, ale nic nie działa.

Ponieważ jest to aplikacja Java, próbowałem uruchomić ją za pomocą terminala

java -cp GŁÓWNA KLASA

i działa dobrze.

Wystarczy wspomnieć, że dostaję ten błąd nie tylko w tej aplikacji, ale w kilku innych aplikacjach.

Z góry dziękuję.

Piętno
źródło

Odpowiedzi:

8

LSOpenURLsWithRole to funkcja służąca do powiązania pliku z programem. Plik, na który klikasz dwukrotnie, nie jest tak naprawdę aplikacją, ale plikiem danych.

W ten sposób na przykład po dwukrotnym kliknięciu dokumentu tekstowego uruchamiany jest program TextEdit lub inna powiązana aplikacja.

Musisz powiązać go ze środowiskiem wykonawczym Java, zakładając, że masz go zainstalowaną.

Po kliknięciu pliku prawym przyciskiem myszy i wybraniu opcji Uzyskaj informacje, w panelu informacyjnym znajduje się sekcja o nazwie „Otwórz za pomocą:”. To powinno być ustawione na środowisko uruchomieniowe Java.

Mroczny rycerz
źródło
3

Dla każdego, kto tu przychodzi i widzi ten problem w programie innym niż Java: Otrzymałem ten sam komunikat o błędzie podczas próby uruchomienia pliku .app, który zawiera plik wykonywalny Mach-O. Próba uruchomienia pliku wykonywalnego bezpośrednio z poziomu pakietu (np. Foo.app/Contents/MacOS/bar) Dała mi znacznie lepszy błąd wskazujący na brak zależności dynamicznej biblioteki lib:

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

Coś do wypróbowania, jeśli widzisz ten błąd.

AndrewJC
źródło
1

Wystąpił również ten błąd w programie Java, który próbowałem wdrożyć. Nie mogłem go uruchomić na moim drugim komputerze Mac: 10.11.6. Wszędzie szukałem odpowiedzi, ale nigdy jej nie znalazłem, więc umieszczam ją tutaj, aby inni mogli z niej skorzystać. Uruchamiając konsolę systemową, odkryłem komunikat o błędzie, że „otwarty” program nie może znaleźć programu „JavaApplicationStub” w treści pakietu. Problem polega na tym, że mój pakiet używał „JavaAppLauncher” do uruchomienia. Właśnie zmieniłem używanie starego Apple JarBundlera na Oracle AppBundler, aby móc podpisać aplikację, a nazwa programu uruchamiającego jest inna. Kluczem tutaj jest to, że nowy pakiet (wersja 7.1.1) zastępował stary (wersja 7.1.0) i miał tę samą nazwę aplikacji. Stary do uruchomienia używał JavaApplicationStub.

Wygląda na to, że właściwości Info.plist dla programu zostały zapisane w pamięci podręcznej, a do uruchomienia nowego pakietu używano starych wartości. Nie wiem, czy pamięć podręczna zostanie wyczyszczona przy wylogowaniu lub ponownym uruchomieniu, czy też jest to naprawione w nowszych wersjach systemu OS X, ale muszę mieć to płynnie dla wszystkich użytkowników końcowych.

Rozwiązałem ten problem, podając numer wersji w nazwie programu.

wjrl
źródło