You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Maven JavaPackager为Linux应用打包安装.desktop文件

解决JavaPackager打包Linux应用的.desktop文件生成与安装问题

问题背景

使用Maven的JavaPackager插件打包Linux应用后运行正常,但缺少.desktop文件导致两个问题:

  • 启动器图标显示异常
  • 无法通过系统搜索找到应用

现有插件配置

<plugin>
    <groupId>io.github.fvarrui</groupId>
    <artifactId>javapackager</artifactId>
    <version>1.6.7</version>
    <configuration>
        <mainClass>com.zparkingb.zploger.GUI.Zploger</mainClass>
        <generateInstaller>false</generateInstaller>
        <administratorRequired>false</administratorRequired>
    </configuration>
    <executions>
        <execution>
            <!-- With JRE -->
            <id>bundling-for-platform-complete</id>
            <phase>package</phase>
            <goals>
                <goal>package</goal>
            </goals>
            <configuration>
                <platform>linux</platform>
                <name>${project.bundle_finalname}${package.buildnamesuffix}</name>
                <outputDirectory>${project.build.directory}/FULL</outputDirectory>
                <createTarball>true</createTarball>
                <createZipball>false</createZipball>
                <bundleJre>true</bundleJre>
                <customizedJre>false</customizedJre>
                <!--From settings.xml-->
                <jrePath>${package.jrePath}</jrePath>
                <jdkPath>${package.jdkPath}</jdkPath>
                <!--Special for Linux-->
                <linuxConfig>
                    <pngFile>assets/linux/Zploger.png</pngFile>
                    <generateAppImage>true</generateAppImage>
                    <generateDeb>false</generateDeb>
                    <generateRpm>false</generateRpm>
                    <wrapJar>true</wrapJar>
                    <categories>
                        <category>Utility</category>
                    </categories>
                </linuxConfig>
            </configuration>
        </execution>
    </executions>
</plugin>

需求目标

生成路径为 ~/.local/share/applications/com-zparkingb-zploger-GUI-Zploger.desktop 的文件,或者将图标放置在 ~/.local/share/icons/xxx/xxx 目录,使.desktop文件通过 Icon=Zploger 引用图标。

实现方案

方案一:利用JavaPackager插件自动生成并部署

修改插件的linuxConfig节点,添加自动生成.desktop文件和安装图标的配置:

<linuxConfig>
    <pngFile>assets/linux/Zploger.png</pngFile>
    <generateAppImage>true</generateAppImage>
    <generateDeb>false</generateDeb>
    <generateRpm>false</generateRpm>
    <wrapJar>true</wrapJar>
    <categories>
        <category>Utility</category>
    </categories>
    <!-- 添加以下配置 -->
    <generateDesktopFile>true</generateDesktopFile>
    <desktopName>Zploger for Scores</desktopName>
    <installIcons>true</installIcons>
    <iconPath>~/.local/share/icons/hicolor/512x512/apps/</iconPath>
</linuxConfig>
  • generateDesktopFile=true:开启自动生成.desktop文件
  • desktopName:设置应用在启动器中的显示名称
  • installIcons=true:自动将图标复制到指定的iconPath目录
  • iconPath:指定系统图标目录(需对应图标尺寸,这里用512x512为例)

插件打包后会自动生成符合要求的.desktop文件,并将图标安装到系统图标目录,此时.desktop文件中的Icon字段会自动设置为Zploger,无需绝对路径。

方案二:自定义模板+手动安装脚本

如果需要更灵活的.desktop内容,可以自定义模板并配合脚本完成安装:

  1. 创建.desktop模板文件
    在项目中创建src/main/resources/Zploger.desktop.template,内容如下:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Zploger for Scores
Icon=Zploger
Exec=${EXECUTABLE_PATH}

其中${EXECUTABLE_PATH}会被插件自动替换为打包后的可执行文件路径。

  1. 修改插件配置
    在linuxConfig中添加模板引用:
<linuxConfig>
    <!-- 原有配置 -->
    <desktopTemplate>src/main/resources/Zploger.desktop.template</desktopTemplate>
    <generateDesktopFile>true</generateDesktopFile>
</linuxConfig>
  1. 编写安装脚本
    创建install.sh脚本,完成图标和.desktop文件的部署:
#!/bin/bash

# 创建图标目录并复制图标
ICON_DIR=~/.local/share/icons/hicolor/512x512/apps
mkdir -p $ICON_DIR
cp path/to/your/Zploger.png $ICON_DIR/

# 复制.desktop文件到应用目录
DESKTOP_FILE=path/to/generated/com-zparkingb-zploger-GUI-Zploger.desktop
cp $DESKTOP_FILE ~/.local/share/applications/

# 更新桌面数据库,让系统识别新的.desktop文件
update-desktop-database ~/.local/share/applications/

将path/to/your/替换为实际文件路径,执行脚本即可完成安装。

方案三:完全手动配置

如果不想依赖插件自动生成,可直接手动创建.desktop文件:

  1. 创建com-zparkingb-zploger-GUI-Zploger.desktop文件,内容如下:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Zploger for Scores
Icon=Zploger
Exec=/path/to/your/app/Zploger
  1. 将图标复制到~/.local/share/icons/hicolor/512x512/apps/Zploger.png
  2. 将.desktop文件复制到~/.local/share/applications/
  3. 执行update-desktop-database ~/.local/share/applications/更新系统缓存

内容的提问来源于stack exchange,提问作者lvr123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:10:48