linux 中的 GUI javafx 应用程序无法通过服务打开

GUI javafx app not opening via service in linux

我创建了一个 GUI Javafx 应用程序并将其导出到一个 jar 文件。 GUI 应用程序运行良好。创建此应用程序后,我已将其移至 linux 系统,并且在这里运行良好。现在我想在 linux 中 运行 使用服务来 运行 这个 GUI 应用程序,这样我就可以在 linux 系统启动时使这个服务 运行 。

为此,我创建了一个 pointless.sh 文件,该文件位于 运行 运行 的 jar 文件中。它运行良好,这个 pointless.sh 文件的代码是

java -jar GUI1.jar

在运行此脚本时,即“./pointless”GUI 显示在屏幕上。

当我尝试为其提供服务时出现问题。

我在/etc/systemd/systempointless.service

为其做了服务
[Service]
ExecStart=/home/mandeep/Documents/pointless.sh

on 运行ning sudo systemctl start pointless.service 没有任何反应,状态显示以下错误。

● pointless.service
   Loaded: loaded (/etc/systemd/system/pointless.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2019-07-06 13:44:00 EDT; 25min ago
  Process: 1449 ExecStart=/home/mandeep/Documents/pointless.sh (code=exited, status=203/EXEC)
 Main PID: 1449 (code=exited, status=203/EXEC)

Jul 06 13:44:00 debian systemd[1]: Started pointless.service.
Jul 06 13:44:00 debian systemd[1449]: pointless.service: Failed at step EXEC spawning /home/mandeep/Documents/pointless.sh: Exec format error
Jul 06 13:44:00 debian systemd[1]: pointless.service: Main process exited, code=exited, status=203/EXEC
Jul 06 13:44:00 debian systemd[1]: pointless.service: Unit entered failed state.
Jul 06 13:44:00 debian systemd[1]: pointless.service: Failed with result 'exit-code'.

更新!!!

步骤 1 正如预期的那样,我创建了一个简单的 Java 应用程序 helloworld 并将其导出到 jar 文件。我 运行 这个文件作为 java -jar helloworld 并且它有效。

步骤 2 我为它创建了一个简单的服务,服务也按预期工作。 服务代码是

[Service]
ExecStart=/usr/bin/java -jar /home/mandeep/Documents/helloworld.jar

输出

Jul 07 17:08:13 debian systemd[1]: Started pointless.service.
Jul 07 17:08:13 debian java[2765]: Hello World!

步骤 3 我将服务更新回 GUI1.jar 以检查发布的原始问题。 代码

[Service]
ExecStart=/usr/bin/java -jar /home/mandeep/Documents/GUI1.jar

再次显示错误

输出

● pointless.service
   Loaded: loaded (/etc/systemd/system/pointless.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2019-07-07 17:14:37 EDT; 4s ago
  Process: 2816 ExecStart=/usr/bin/java -jar /home/mandeep/Documents/GUI1.jar (code=exited, status=1/FAILURE)
 Main PID: 2816 (code=exited, status=1/FAILURE)

Jul 07 17:14:37 debian java[2816]:         at com.sun.glass.ui.Application.run(Application.java:146)
Jul 07 17:14:37 debian java[2816]:         at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:257)
Jul 07 17:14:37 debian java[2816]:         at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:211)
Jul 07 17:14:37 debian java[2816]:         at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
Jul 07 17:14:37 debian java[2816]:         at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337)
Jul 07 17:14:37 debian java[2816]:         at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
Jul 07 17:14:37 debian java[2816]:         ... 5 more
Jul 07 17:14:37 debian systemd[1]: pointless.service: Main process exited, code=exited, status=1/FAILURE
Jul 07 17:14:37 debian systemd[1]: pointless.service: Unit entered failed state.
Jul 07 17:14:37 debian systemd[1]: pointless.service: Failed with result 'exit-code'.

找到答案

在 pointless.service

[服务] 下进行了以下更改

a) 使用“Environment=DISPLAY:=0

b) 声明“User=<user>

和[安装]下可选

c) 声明“WantedBy=<user>@.service