我有一个从终端运行时可以正常工作的 java 程序java -jar "lizzie.jar"
,但是当我在 Nautilus 中双击它时,它会运行(即 UI 显示),但对于其中一个文件(./leelaz)返回错误“没有这样的文件或目录” ) 这取决于能否正常工作。
我创建了一个/home/username/.local/share/applications
包含以下内容的 .desktop 文件:
#!/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-generic
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
NB 程序在这两种情况下都运行,但是在双击或者使用.desktop的情况下无法访问依赖。Lizzie 然后报告:Cannot run program "./leelaz": error=2, No such file or directory.
但是,文件./leelaz
在那里,并且再次,从终端运行时一切正常。
(如果有兴趣,应用程序是Lizzie,它是 Go AI Leela Zero 的接口。)
成功运行
java -jar "lizzie.jar"
后,您当前的工作目录与文件所在的目录相同lizzie.jar
。否则,lizzie.jar
将不会被发现。lizzie.jar
显然希望在自己的目录中找到它需要的文件。因此,您需要确保将当前目录设置为“lizzie.jar”所在的目录。将以下桌面条目添加到
.desktop
启动器: