Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用“pkexec”打开.jar文件并使用桌面条目运行命令_Java_Bash_Ubuntu_Desktop_Ubuntu 18.04 - Fatal编程技术网

Java 使用“pkexec”打开.jar文件并使用桌面条目运行命令

Java 使用“pkexec”打开.jar文件并使用桌面条目运行命令,java,bash,ubuntu,desktop,ubuntu-18.04,Java,Bash,Ubuntu,Desktop,Ubuntu 18.04,我正在编写一个bash脚本,它可以在运行Lubuntu 18.04的USB上自动安装和基本依赖关系管理 bash脚本的一部分在/usr/share/applications下创建一个桌面条目,以便从Lubuntu菜单轻松启动 以下是我正在使用的条目: [Desktop Entry] Encoding=UTF-8 Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=

我正在编写一个bash脚本,它可以在运行Lubuntu 18.04的USB上自动安装和基本依赖关系管理

bash脚本的一部分在
/usr/share/applications
下创建一个桌面条目,以便从Lubuntu菜单轻松启动

以下是我正在使用的条目:

[Desktop Entry]
Encoding=UTF-8
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Icon=~/.minecraft/icons/default.png
Type=Application
Terminal=false
Name=Minecraft
GenericName=minecraft
StartupNotify=false
Categories=Game
命令
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY/usr/bin/java-jar-Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel~/.minecraft/tlauncher.jar
工作,如果在终端中运行,则启动tlauncher。然而,当我把命令放在桌面条目中时,我觉得我遗漏了一些东西

当我试图从Lubuntu菜单打开条目时,光标显示有东西正在加载,但无论我等待多长时间,都不会发生任何事情。我也不知道如何调试桌面条目。我试图
xdg打开
条目,但在终端中没有得到任何输出,也没有发生任何事情-即,TLauncher没有启动

我尝试将该命令放在一个单独的bash文件中,如下所示:

#!/bin/bash

pkexec env DISPLAY=:0 XAUTHORITY=/home/me/.Xauthority /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
在terminal
bash testscript.sh
中运行它可以工作并启动TLauncher

但是当我把它放在桌面条目中,替换上面条目中的
exec
,如下所示:

Exec=/bin/bash /path/to/testscript.sh
它不起作用

shell脚本具有适当的权限

我觉得要么是我把桌面条目的
exec
值写错了,要么是
pkexec
不应该像我尝试的那样从桌面条目开始工作

我希望能够通过菜单从桌面条目启动TLauncher,并有一个gui弹出窗口询问密码,以便以
root
身份运行命令

编辑:

使用完整路径而不是
~
也会产生相同的结果-即,它不起作用,上述问题仍然存在


设置
Terminal=true
对我来说并不能解决这个问题。

当前解决方案:由于命令在终端中运行时有效,只需让桌面条目使用终端运行命令即可:

Exec=lxterminal -e "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel /home/me/.minecraft/tlauncher.jar"
注意事项:

我想我可以以此为基础,确保当启动器关闭时,它实际上是关闭的,正如我通过
ps aux
注意到的那样,进程并没有像我期望的那样在下次打开启动器时导致奇怪的行为