Значок Java отображается вместо значка приложения; установлен с помощью install4j

У меня есть приложение Java, которое я установил через install4j. Ярлык на рабочем столе показывает правильный значок приложения, который был установлен в файле .desktop; однако после запуска значок приложения не отображается в док-станции. Вместо него отображается значок Java по умолчанию.

Вот так выглядит на рабочем столе:

On the Desktop

Но на док-станции отображается значок Java:

On the Dock

Я также не уверен, почему, правильное имя приложения не появляется, когда я наведите курсор на значок на панели - он называет Java вместо лаунчера.

.desktop:

#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Name=NMRViewJ
Exec="/home/issac/NMRViewJ/NMRViewJ"
Icon=/home/issac/NMRViewJ/.install4j/NMRViewJ.png
StartupWMClass = sun-awt-X11-XFramePeer
Categories=Application;
1
задан 23 June 2019 в 12:59

1 ответ

Это будет исправлено в install4j 8.0 примерно через 2 недели (источник: я работаю в компании, которая разрабатывает install4j).

Основная проблема заключается в том, что свойство WMClass окон AWT установлено на основной класс. Это означает, что основной класс должен быть уникальным для приложения, но install4j вставляет свой собственный основной класс, который до 7.0 всегда одинаков. В качестве обходного пути вы можете рефлексивно изменить внутреннее состояние инструментария AWT:

Class<?> toolkitClass = Toolkit.getDefaultToolkit().getClass();

if (toolkitClass.getName().equals("sun.awt.X11.XToolkit")) {
    Field awtAppClassName = toolkitClass.getDeclaredField("awtAppClassName");
    awtAppClassName.setAccessible(true);
    awtAppClassName.set(null, "<my unique application name>");
}

В install4j 8.0 будет создан уникальный главный класс, а сгенерированный файл .desktop будет содержать соответствующую запись StartupWMClass.

4
ответ дан 23 June 2019 в 12:59

Другие вопросы по тегам:

Похожие вопросы: