运行 javafx jar 作为 sudo:无法打开显示

Run javafx jar as sudo: Unable to open DISPLAY

我正在构建一个基于 spring 的 javafx 应用程序,它的目标是在 Linux 和 Windows 机器上 运行。

我遇到了一个错误,找不到令人满意的问题解决方案。
在尝试 运行 命令 sudo java -jar MS.jar 时,我得到 InvocationTargetException:
Caused by: java.lang.UnsupportedOperationException: Unable to open DISPLAY

当然,单独执行 java -jar MS.jar 时,一切正常。

顺便说一句,运行 echo $DISPLAY 在终端结果中带有“:0”

软件是javafxUI软件,内核任务需要sudo权限

机器详情:
OS:OpenSuse 42.1
JAVA版本:“1.8.0_152”

我该如何解决这个问题?

谢谢!

你试过gtksudo/gtksu/kdesu

命令而不是 sudo?

如果您的应用是 UI 应用,那应该可以解决问题。

有关详细信息,请参阅:https://linux.die.net/man/1/kdesu , http://www.linfo.org/kdesu.html

引用来自其他地方的答案,该答案对我有用,在 Ubuntu 上以 javafx 为根...也许这可以帮助其他人。我和你有同样的问题,但对于普通用户。假设我想使用用户帐户 foo 启动 firefox。我以 bar:

身份登录

[bar@localhost ~]$ sudo -u foo -H firefox

遗憾的是,该命令失败并出现与问题中相同的错误(即未指定协议且无法打开显示)

我的解决方案是简单地将用户 foo 添加到 X 服务器的授权访问列表中。

xhost si:localuser:foo

就是这样,然后我可以使用 sudo 和用户 foo 启动 Firefox(和其他 X 应用程序)。