JPackage автоматически генерирует средство запуска (
Код: Выделить всё
lib/.desktop
Согласно установщику Ubuntu DEB, все приложения Java имеют один и тот же значок, нам просто нужно убедиться, что файл .desktop содержит правильный StartupWMClass. Используя xprop, я обнаружил, что это значение основано на полном имени класса, отвечающего за окно, что имеет абсолютный смысл.
Так как же мне сообщить jpackage, какой StartupWMClass установить в сгенерированном файле . Desktop-файл?
Редактировать: Чтобы дополнить комментарий Бодо, я покажу, как я вызываю jpackage. На самом деле я сам не запускаю командную строку — вместо этого я использую плагин maven, настроенный как:
Код: Выделить всё
com.github.akman
jpackage-maven-plugin
package
jpackage
target
OoliteCommunicator
PLATFORM
${project.version}
Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)
Hiran
target/classes/com/mycompany/oolitecommunicator/ui/Communicator_Logo_Icon.png
target/dist
OoliteCommunicator-${project.version}.jar
com.mycompany.oolitecommunicator.Main
Код: Выделить всё
# jpackage
--dest /home/hiran/NetBeansProjects/OoliteCommunicator/target
--app-version '1.0-20211220-090022'
--description 'Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)'
--name 'OoliteCommunicator'
--vendor 'Hiran'
--icon /home/hiran/NetBeansProjects/OoliteCommunicator/target/classes/com/mycompany/oolitecommunicator/ui/Communicator_Logo_Icon.png
--input /home/hiran/NetBeansProjects/OoliteCommunicator/target/dist
--main-jar 'OoliteCommunicator-1.0-20211220-090022.jar'
--main-class com.mycompany.oolitecommunicator.Main
/usr/lib/jvm/java-16-openjdk-amd64/bin/jpackage @/home/hiran/NetBeansProjects/OoliteCommunicator/target/jpackage.opts
Код: Выделить всё
[Desktop Entry]
Name=OoliteCommunicator
Comment=Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)
Exec=/opt/oolitecommunicator/bin/OoliteCommunicator
Icon=/opt/oolitecommunicator/lib/OoliteCommunicator.png
Terminal=false
Type=Application
Categories=Unknown
MimeType=
Код: Выделить всё
StartupWMClass=com-mycompany-oolitecommunicator-Main
- /opt/oolitecommunicator/lib/oolitecommunicator-OoliteCommunicator. Desktop
- /usr/share/applications/oolitecommunicator-OoliteCommunicator.desktop
Подробнее здесь: https://stackoverflow.com/questions/704 ... sktop-file