我有一个 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=true
和Terminal=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/