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

如何在Linux系统启动时运行JavaFX GUI应用程序

JavaFX GUI应用随Linux系统启动自动运行问题

我有一个包含所有依赖的JavaFX fat jar包,在Linux环境下可通过以下命令正常运行:

/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar

现在需要实现该应用随系统启动自动运行,已尝试以下两种方法但均失败:

方法1:使用xdg autostart桌面文件

在/etc/xdg/autostart/目录下创建startup.desktop文件,内容如下:

[Desktop Entry] Type=Application
Name=JavaApplication
Exec=/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar

重启系统后应用未启动。

方法2:使用systemd服务

创建my_startup.service文件,内容如下:

[Unit]
Description=Sample application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=my_user
WorkingDirectory=/home/my_user
ExecStart=/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar

[Install]
WantedBy=multi-user.target

执行启用命令:

sudo systemctl enable my_startup.service

查看服务状态:

sudo systemctl status -l my_startup.service

结果显示启动失败,状态信息如下:

× my_startup.service - Sample application autostart
     Loaded: loaded (/etc/systemd/system/my_startup.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2023-12-13 10:02:55 CET; 1h 13min ago
    Process: 684 ExecStart=/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar (code=exited, status=1/FAILURE)
   Main PID: 684 (code=exited, status=1/FAILURE)
        CPU: 572ms

dec 13 10:02:55 my_user java[684]:         at com.sun.glass.ui.Application.run(Application.java:146)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:290)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:293)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:679)
dec 13 10:02:55 my_user java[684]:         at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
dec 13 10:02:55 my_user java[684]:         at java.base/java.lang.Thread.run(Thread.java:833)
dec 13 10:02:55 my_user systemd[1]: my_startup.service: Main process exited, code=exited, status=1/FAILURE
dec 13 10:02:55 my_user systemd[1]: my_startup.service: Failed with result 'exit-code'.

修复方案

方案1:修正xdg autostart桌面文件

桌面文件格式存在错误,需调整换行并补充必填项,修改后的/etc/xdg/autostart/startup.desktop内容如下:

[Desktop Entry]
Type=Application
Name=JavaApplication
Exec=/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar
Terminal=false
Hidden=false
X-GNOME-Autostart-enabled=true

保存文件后重启系统,应用即可随桌面环境启动。

方案2:修正systemd服务配置

JavaFX GUI应用需要图形环境变量支持,修改my_startup.service文件如下:

[Unit]
Description=Sample application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target graphical.target

[Service]
Type=simple
User=my_user
WorkingDirectory=/home/my_user
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/my_user/.Xauthority
ExecStart=/usr/lib/jvm/jdk-17/bin/java -jar /home/my_user/application.jar

[Install]
WantedBy=graphical.target

执行以下命令重新加载并启用服务:

sudo systemctl daemon-reload
sudo systemctl enable my_startup.service

重启系统后,通过systemctl status my_startup.service确认服务状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:40:25