2017-02-18 7 views
8

Kiedy moja aplikacja napisana w Java z SWT działa pod OS X, zarówno spod Eclipse iz jar, jego nazwa w starterze brzmi „Java”, jak pokazano na zdjęcie.Jak zmienić nazwę aplikacji Java pokazany w systemie Mac OS X starterze

wrong app name shown in the launchpad

Na początku mojego kodu nazywam Display.setAppName("MyApp") i nazwa aplikacji w menu paska menu i elementów jest poprawna, to czyta MyApp, About MyApp, Configure MyApp, itd. Elementy menu zachowują się poprawnie , Mogę odbierać i obsługiwać odpowiednie zdarzenia. Problem dotyczy wyłącznie nazwy aplikacji wyświetlanej w starterze. Czy jest jakiś sposób, aby ustawić poprawną nazwę, która ma być wyświetlana w starterze programowo, z kodu, bez tworzenia pakietu aplikacji?

P. S. Kod jest uruchomiony pod JVM, który jest uruchamiany od wewnątrz mojego kodu przy użyciu ProcessBuilder:

new ProcessBuilder("java -cp mypath MyClass my args").start(); 

rodzaj rekursji, potrzebne do obliczenia niektóre opcje JVM i zmiennymi CLASSPATH programowo przed uruchomieniem aplikacji.

Odpowiedz

1

Powinieneś utworzyć pakiet aplikacji dla systemu MacOS ze swoim słojem, w którym możesz umieścić nazwę wyświetlaną pakietu w pliku Info.plist pakietu. Jest to dobrze udokumentowane przez Oracle (http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html).

Struktura aplikacji Java pakiet jest udokumentowany przez Apple, a także: https://developer.apple.com/library/content/documentation/Java/Conceptual/Java14Development/03-JavaDeployment/JavaDeployment.html

+0

Dziękuję, ale jestem m szuka sposobu na osiągnięcie tego celu bez tworzenia pakietu aplikacji. Chciałbym programowo naprawić nazwę aplikacji z kodu. Jest to wymóg narzucony przez klienta - aplikacja powinna być pojedynczym słojem, który musi działać równie dobrze w systemach Windows, Linux i Mac. Obecnie tak jest, a jedyną rzeczą, której nie lubię, jest nazwa tej aplikacji wyświetlana w starterze. –

0

należy wykonać następujące czynności podczas aplikacji inicjalizacji przed GUI jest zbudowany:

// take the menu bar off the jframe 
System.setProperty("apple.laf.useScreenMenuBar", "true"); 

// set the name of the application menu item 
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "AppName"); 

// set the look and feel 
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

Ale powyższy kod działa Java 1.5, kod ten nie może działać w 1,6

na nowy java zobaczyć documentation:

  1. Albo użyć -Xdock: własność nazwa wiersza poleceń: -Xdock: name = YourAppName
  2. Albo ustawić CFBundleName w informacyjnym listy właściwości pliku (plist)
+0

Używam 'SWT', a nie' AWT/Swing', więc granie z Lafs nie ma sensu. '-Xdock: name' działa, ale działa tylko dla nazwy aplikacji widocznej na pasku menu.I jest prostszy sposób to zrobić: 'Display.setAppName (myAppName)' robi dokładnie to samo. Żadna z tych sztuczek nie wpływa na nazwę wyświetlaną obok ikony aplikacji w programie uruchamiającym, więc nie rozwiązuje ona mojego problemu. –

+0

@ m.vokhm Czy zadzwoniłeś do setAppName, zanim wszystko zostanie utworzone? – Hrabosch

+0

@Hrabosch Tak, zrobiłem to i działa dla menu, ale nie dla startera, jak sugerowałem powyżej. Zmieniłem to pytanie, aby wyrazić je jaśniej. –

Powiązane problemy