如何配置 .desktop 文件以运行 .jar 文件,就像从终端运行一样

如何配置 .desktop 文件以运行 .jar 文件,就像从终端运行一样

我有一个 Java 程序,当我java -jar "lizzie.jar"从终端运行时它可以正常工作,但是当我在 Nautilus 中双击它时它可以运行(即显示 UI),但对于它所依赖的其中一个文件(./leelaz)返回错误“没有这样的文件或目录”才能正常工作。

我创建了一个 .desktop 文件,其中/home/username/.local/share/applications包含以下内容:

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Lizzie
Type=Application
Exec=java -jar "/home/username/opt/Lizzie/lizzie.jar"
Icon=/home/username/opt/Lizzie/lizzie_custom_logo.png
Comment=Lizzie
Terminal=false

运行此程序会产生与双击相同的错误。

我发现并读到帖子,我尝试使用Terminal=trueTerminal=false。文件 lizzie.jar 设置为允许作为程序执行,并且从 Nautilus 和终端运行时我都不是 root。这当然可能是 Lizzie 的问题,而不是 Ubuntu 的问题,但我认为我应该能够生成与从终端运行时相同的行为。

地区:Ubuntu 18.04.6 LTS; 核心:5.4.0-99-通用

java -version返回:

openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

问题:双击并运行 .desktop 的行为与终端不同的可能原因是什么?我如何配置 .desktop 文件,使其具有与java -jar lizzie.jar从终端运行完全相同的行为?

./leelaz注意:程序在两种情况下均可运行,但在双击或使用 .desktop 的情况下无法访问依赖项。Lizzie 随后报告:Cannot run program "./leelaz": error=2, No such file or directory.但是,文件./leelaz在那里,而且从终端运行时一切正常。

(如有兴趣,申请莉齐,Go AI Leela Zero 的界面。)

答案1

双击并运行 .desktop 的行为与终端不同的可能原因是什么

成功运行后java -jar "lizzie.jar",您当前的工作目录与文件所在的目录相同lizzie.jar。否则,lizzie.jar将找不到。

lizzie.jar显然它希望在自己的目录中找到所需的文件。因此,您需要确保将当前目录设置为“lizzie.jar”所在的目录。

我如何配置一个 .desktop 文件,使其提供与从终端运行 java -jar lizzie.jar 完全相同的行为?

将以下桌面条目添加到.desktop启动器:

Path=/home/username/opt/Lizzie/

相关内容