2013-05-16 14 views
10

Jestem odpowiedzialny za aplikację Java, która jest wdrażana na wielu platformach, w tym OS X. W najnowszych wersjach aplikacji rozprowadzamy dwa osobne pakiety dla systemu OS X - taki, który korzysta z JavaApplicationStub dostarczonego przez firmę Apple, oraz inny, który zawiera pakiet JDK 7 i używa wyrzutni wyprodukowanej w domu (modyfikacja JavaAppLaunchera firmy Oracle).W jaki sposób system Mac OS X określa, że ​​aplikacja potrzebuje języka Java?

Problem polega na tym, że w przypadku tego ostatniego pakietu system Mac OS X nadal nalega na zainstalowanie środowiska Java 6 podczas próby uruchomienia aplikacji. W szczególności komunikat mówi:

"Aby otworzyć (aplikację), potrzebujesz środowiska wykonawczego Java SE 6. Czy chcesz teraz zainstalować?"

Jeśli nie zainstalujesz Java SE 6, nie będziesz w stanie uruchomić aplikacji, mimo że pakiet JDK 7 jest dołączony (i jeśli instalujesz Java 6, to jednak działa z dołączoną Javą 7).

Co staram się wymyślić, jak OS X decyduje, że aplikacja wymaga Java? Próbowałem zmienianie nazwy słownika "Java" w pliku Info.plist i zmianę nazwy podfolderu Java w folderze Zasoby, bez powodzenia. Czy ktoś ma jakieś pomysły? Z pewnością możliwe jest posiadanie aplikacji z pakietem JDK bez konieczności instalacji JDK systemowego?

+0

czy [this] (http://stackoverflow.com/questions/14806709/application-is-using-java-6-from-apple-instead-of-java-7-from-oracle-on-mac- os-x) pomoc w jakikolwiek sposób? – Gamb

+0

* "inny, który zawiera pakiet JDK 7" * DYM JRE 7? –

+0

Gamb, nie. Nie używamy JavaAppLauncher od Apple. Problem nie polega na tym, że działa z niewłaściwym JDK, ale nalega na zainstalowanie Java 6. – davmac

Odpowiedz

2

Znalazłem odpowiedź (z pomocą Mike'a Swinglera na liście mailingowej [email protected]).

Obecność słownika "Java" w pliku Info.plist to, co powoduje wyświetlenie okna dialogowego, jednak zmiana nazwy słownika po uruchomieniu aplikacji nie jest wystarczająco dobra. System w jakiś sposób buforuje wymagania dla Javy i po prostu ponownie wyświetla okno dialogowe. Aby tego uniknąć, konieczne było pobranie nowej kopii aplikacji i wprowadzenie zmiany przed próbą uruchomienia jej po raz pierwszy (powiedziano mi, ponieważ zmiana nazwy aplikacji wystarczy, nawet zmiana jej nazwy, a następnie powrót do pierwotnej wersji) Nazwa).

Na szczęście oznacza to, że wystarczy zmienić nazwę słownika "Java" i zmienić nasz dostosowany program uruchamiający, aby używał nowej nazwy słownika.

Powiązane problemy