애플리케이션 아이콘 대신 Java 아이콘이 표시됩니다. install4j로 설치

애플리케이션 아이콘 대신 Java 아이콘이 표시됩니다. install4j로 설치

install4j를 통해 설치한 Java 애플리케이션이 있습니다. 바탕화면 바로가기는 .desktop 파일에 설정된 올바른 애플리케이션 아이콘을 표시합니다. 그러나 일단 실행되면 응용 프로그램 아이콘이 도크에 표시되지 않습니다. 그 자리에 기본 Java 아이콘이 표시됩니다.

데스크톱에서는 다음과 같이 표시됩니다.

데스크탑에서

그러나 Dock에는 Java 아이콘이 표시됩니다.

도크에서

또한 도크의 아이콘 위로 마우스를 가져가면 올바른 애플리케이션 이름이 표시되지 않는 이유도 잘 모르겠습니다. 대신 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

이 문제는 install4j 8.0에서 약 2주 안에 수정될 예정입니다. (출처: 저는 install4j를 개발하는 회사에서 일하고 있습니다.)

가장 큰 문제는 WMClassAWT 창의 속성이 기본 클래스로 설정되어 있다는 것입니다. 즉, 메인 클래스는 애플리케이션에 대해 고유해야 하지만 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항목이 포함됩니다.

관련 정보