Ответ 1
Я получил эту работу, создав Exe из runnable jar с помощью JSmooth . Настроил его на панель задач и без проблем запускал его.
Надеюсь, что это поможет
Проведя полдня в поисках и попытке, я, наконец, сдаюсь.
У меня есть приложение java, из которого я создаю runnable jar (чтобы включить любые другие библиотеки и просто иметь один файл jar). С launch4j и runnable jar я делаю исполняемый файл "MyApp.exe".
Исполняемый файл работает нормально, но я хочу привязать его к панели задач Windows 7. На данный момент у меня есть запись в панели задач "Закрыть окно".
После прочтения и реализации следующих решений с JNA
мое приложение правильно отображает "Идентификатор модели пользователя приложения" в gui (только для целей тестирования).
НО: моя программа отображается как "javaw.exe" в диспетчере задач, и я все еще не могу ее привязать к панели задач, даже если я установил параметр запуска4j "пользовательское имя процесса и манифест стиля XP".
Фоновая информация: я работаю с учетной записью администратора Windows 7, и я не хочу, чтобы приложение требовало прав администратора.
В любом случае, если я запустил приложение "как администратор" из контекстного меню и подтвердил сообщение UAC, теперь я могу привязать его к панели задач. НО: хотя я правильно установил "Идентификатор модели приложения", окна все еще хотят вывести "javaw.exe" , хотя моя программа теперь отображается как "MyApp.exe" в TaskManager.
Я смущен. Но я, очевидно, не единственный, у меня есть эти проблемы. = > См. Последние комментарии к Gregory Pakosz answer in Использование JNA для получения/установки идентификатора приложения
Заключительные вопросы:
Я получил эту работу, создав Exe из runnable jar с помощью JSmooth . Настроил его на панель задач и без проблем запускал его.
Надеюсь, что это поможет
Вы ищете это, которое я использовал в своем приложении, чтобы показать запущенное приложение Java на панели задач Windows.
SystemTray systemTray = new SystemTray(composite, parent.getShell(), parent.getDisplay(), "My Application");
systemTray.makeSystemTray();
Нет проблем с winrun4j, который является более новым и более простым в использовании, чем Jsmooth
Основная причина: javaw
зарегистрирована как хост-процесс (в реестре Windows). Поведение ярлыка, вероятно, вызвано следующим (источник: Идентификаторы модели пользователей приложения (AppUserModelIDs))
Определенные приложением и системные идентификаторы AppUserModelIDs
Некоторые приложения не объявляют явный AppUserModelID. Они есть необязательный. В этом случае система использует серию эвристик для назначьте внутренний AppUserModelID.
[...]
если процесс был запущен с помощью ярлыка, содержащего запуск аргументы (обычно целевой контент для размещения как "приложение" ), система может определить личность, и приложение может быть закреплено и перезапущены.
О поведении хост-процесса:
Регистрация приложения в качестве хост-процесса
Приложение может устанавливать запись реестра IsHostApp, чтобы заставить исполняемый процесс быть рассмотренный хостом на панели задач. Это влияет на его группировку и записи списка переходов по умолчанию.