2014-02-07 2 views
0

Недавно я написал небольшое приложение Java с Eclipse и упаковал экспортируемый Runnable Jar с помощью Jar Bundler от Apple. Все работает отлично, за исключением моих клавиш plist для скрытия иконки приложения в доке. Я попробовал предыдущие ключи plist, которые я использовал раньше, чтобы скрыть значок док-станции, но они не работают. Я запускаю свое приложение, значок появляется в доке и сидит там, подпрыгивая какое-то время, затем он перестает подпрыгивать и просто сидит там. Я не хочу показывать значок Dock, и я не хочу значок в системном трее. Мне просто нужно, чтобы мое приложение работало в фоновом режиме.Java Mac App Hiding Dock Icon

Ключи Я пробовал и не повезло.

apple.awt.UIElement правда

и

Применение является агентом (UIElement) установлено значение True/Yes в Plist Редактор

UPDATE: Вот мой PLIST. Мое приложение все еще отскакивает в доке. Если я позволяю ему сидеть некоторое время, он в конечном итоге начнет работать.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>LSUIElement</key> 
    <string>1</string> 
    <key>CFBundleName</key> 
    <string>My App</string> 
    <key>CFBundleIdentifier</key> 
    <string>org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader</string> 
    <key>CFBundleVersion</key> 
    <string>100.0</string> 
    <key>CFBundleAllowMixedLocalizations</key> 
    <string>true</string> 
    <key>CFBundleExecutable</key> 
    <string>JavaApplicationStub</string> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleGetInfoString</key> 
    <string>My App</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleIconFile</key> 
    <string>icon.icns</string> 
    <key>Java</key> 
    <dict> 
     <key>WorkingDirectory</key> 
     <string>$APP_PACKAGE/Contents/Resources/Java</string> 
     <key>MainClass</key> 
     <string>org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader</string> 
     <key>JVMVersion</key> 
     <string>1.6+</string> 
     <key>ClassPath</key> 
     <string>$JAVAROOT/myapp.jar</string> 
     <key>Properties</key> 
     <dict/> 
    </dict> 
</dict> 
</plist> 

UPDATE 2: Когда я запускаю мое приложение Java с помощью команды Sudo терминала открытого /Applications/MyJava.app он работает нормально. Если я обычно запускаю свое приложение и позволяю ему подпрыгивать на доке, какое-то время он будет работать. Я бы предпочел не запрашивать у пользователя учетные данные, чтобы просто запустить мое простое приложение.

+0

вы пробовали это? http://stackoverflow.com/a/2762735/270157 – Goibniu

+0

У меня есть, но это тоже не сработало. Приложение все еще прыгает вверх и вниз на доке, затем переходит к «Приложение не отвечает». Опять же, мой JAR-файл работает отлично, нулевые проблемы. Просто когда я упаковываю как APP с помощью Jar Bundler. – Lgwells1

ответ

0

В вашем PLIST: java -Djava.awt.headless=true

или

в вашем коде: System.setProperty("java.awt.headless", "true");

+0

Я начинаю думать, что что-то не так с моим упакованным .app, у меня есть агент запуска, запускающий файл при входе в систему. Он запускает JavaApplicationStub внутри .app, поэтому, если я перезагружу свой компьютер, он запустится немного позже. Я немного позже опубликую свой планшет. – Lgwells1