如何使用 java 运行 .war 以从桌面快捷方式在目录中执行

如何使用 java 运行 .war 以从桌面快捷方式在目录中执行

这是我的情况。我有一个用 java 执行的 .war,它只在其文件夹中运行:

cd /opt/myappdir/
java -jar myapp.war

注意:它不能像这样工作:

java -jar /opt/myappdir/myapp.war

我已经创建了一个 bash 脚本(sudo /opt/myappdir/run.sh)来启动这个命令

#!/usr/bin/env bash
cd /opt/myappdir/
java -jar myapp.war

到目前为止一切正常。现在的问题是:

我想从桌面上的快捷方式启动它。这是我的桌面快捷方式,用于启动 myapp war

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=MyApp
Comment=Run MyApp
Type=Application
Exec=/opt/myappdir/run.sh
Icon=/opt/myappdir/myapp.ico
Path=/opt/myappdir/
Terminal=false

但由于myapp.war需要使用 sudo 运行,因此myappdir我修改了run.sh脚本,如下所示

#!/usr/bin/env bash
cd /opt/myappdir/
dir=$(dirname $(readlink -m $BASH_SOURCE))
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 java -jar myapp.war

为什么要用 来表示dir=$(dirname $(readlink -m $BASH_SOURCE))

因为我需要确保myapp.war正在运行myappdir

为什么要用 来表示pkexec

因为双击桌面快捷方式时java需要运行sudo

出去:

Error: Unable to access jarfile myapp.war

某人这里为类似问题提供了解决方案,但对我来说不起作用。(修改提案:)

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=java -jar 'myapp.war'
Path=/opt/myappdir/
Name=myapp
Comment=myapp
Icon=/opt/myappdir/myapp.ico

我该如何修复我的run.sh脚本以使其myapp.warsudo内部运行myappdir并从桌面快捷方式调用它?谢谢

更新

根据某人的解释这里pkexec无法在同一目录中运行(我猜这就是它找不到myapp.war文件的原因)。因此,解决方案可能是运行一个命令,强制它进入目录以运行 java,但我尝试过但失败了

相关内容