Java 无法使用“localhost:10.0”作为 DISPLAY 变量的值连接到 X11 窗口服务器

2024-10-14 08:40:00
admin
原创
280
摘要:问题描述:我有一个使用 java 的脚本,用于连接到 localhost 的端口 10.0 上的显示 X​​11但我总是得到这个错误java.lang.InternalError: Can't connect to X11 window server using 'loca...

问题描述:

我有一个使用 java 的脚本,用于连接到 localhost 的端口 10.0 上的显示 X​​11

但我总是得到这个错误

java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
    at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.Toolkit$2.run(Toolkit.java:849)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
    at ij.io.Opener.openJpegOrGif(Opener.java:367)
    at ij.io.Opener.openImage(Opener.java:220)
    at ij.io.Opener.openImage(Opener.java:249)
    at ij.io.Opener.open(Opener.java:116)
    at ij.IJ.open(IJ.java:1112)
    at ij.macro.Functions.open(Functions.java:2006)
    at ij.macro.Functions.doFunction(Functions.java:129)
    at ij.macro.Interpreter.doStatement(Interpreter.java:205)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.runUserFunction(Interpreter.java:278)
    at ij.macro.Interpreter.getFactor(Interpreter.java:1200)
    at ij.macro.Interpreter.getTerm(Interpreter.java:1162)
    at ij.macro.Interpreter.getExpression(Interpreter.java:1145)
    at ij.macro.Interpreter.getBooleanExpression(Interpreter.java:881)
    at ij.macro.Interpreter.getLogicalExpression(Interpreter.java:857)
    at ij.macro.Interpreter.getBoolean(Interpreter.java:850)
    at ij.macro.Interpreter.doIf(Interpreter.java:829)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.doStatement(Interpreter.java:241)
    at ij.macro.Interpreter.doIf(Interpreter.java:831)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doStatements(Interpreter.java:195)
    at ij.macro.Interpreter.run(Interpreter.java:99)
    at ij.macro.Interpreter.run(Interpreter.java:65)
    at ij.macro.Interpreter.run(Interpreter.java:75)
    at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:127)
    at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:112)
    at ij.IJ.runMacroFile(IJ.java:103)
    at ij.ImageJ.main(ImageJ.java:517)

我已尝试一切方法来解决这个问题,例如:

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

我也尝试了端口 0.0,但总是出现同样的错误

尝试 xhost 之后

xhost +local:all
xhost:  unable to open display ""
xhost:  unable to open display ":10.0"

我该如何修复这个问题,我以为 X 服务器没有运行,所以我试了一下,startx它说它正在那个端口上运行

我的系统是 Ubuntu 服务器版本 10.04


解决方案 1:

您需要-Djava.awt.headless=true在启动时指定该参数。

解决方案 2:

这个命令帮助我解决了这个问题:

export DISPLAY=:0

解决方案 3:

删除 DISPLAY 变量

unset DISPLAY

这在大多数情况下都有帮助(例如启动应用程序服务器或其他基于 Java 的工具),并避免修改所有那么多命令行。

将其添加到专用应用服务器/工具用户的 .bash_profile 中也会很方便。

解决方案 4:

我认为您正在使用 sudo 模式。请退出到用户模式并重试

解决方案 5:

如果有人尝试通过 CI(jenkins,..)上的 maven-surefire-plugin 运行自动化单元测试,并收到上述错误,请务必更新您的 surefire 插件配置:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>${maven-surefire-plugin.version}</version>
     <configuration>
            <systemPropertyVariables>
                <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
      </configuration>
</plugin>

解决方案 6:

这将修复它:

/usr/bin/java -Djava.awt.headless=true $Your_program

解决方案 7:

对于我来说,以-Y而不是 -X登录是可行的。

如果您有不受信任的 X11(如下所示),请尝试使用 -Y 标志(如果您信任主机):

警告:不受信任的 X11 转发设置失败:未生成 xauth 密钥数据

解决方案 8:

这解决了我的问题

xhost +

但请注意,这xhost +将完全停用身份验证并允许每个人访问您屏幕上的所有应用程序。

xhost +si:localuser:root似乎与正确的身份验证类似。

解决方案 9:

如果您尝试使用 su 导出显示但仍然不起作用。这是对我有用的方法。请尝试为 sudo 用户进行 X11 转发。

使用 ssh 的 -X 选项连接远程主机。

# ssh -X root@remote-host

现在列出当前用户的 coockie 集。

# xauth list $DISPLAY
    node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
    localhost:10.0

使用 sudo 切换到另一个用户帐户。将上面命令输出中的 cookie 添加到 sudo 用户。

# sudo su - [user]
# xauth add node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa

再次为 sudo 用户导出步骤 2 中的显示内容。尝试使用命令 xclock 来验证 x 客户端应用程序是否按预期运行。

# export DISPLAY=localhost:10.0

来源:https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-using-sudo/

解决方案 10:

经过几天徒劳的努力,在装有 headless fedora 22 的 raspberry pi 2 上安装了 glassfish,下面的操作对我来说毫无问题

 unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar

从这里得到我的帮助

解决方案 11:

第一:启动XQuartz

第二步:ssh -X user@ip_address

...:开始您的流程

如果您 ssh 然后启动 XQuartz,您将收到该错误

解决方案 12:

首先在 Jenkins 的构建阶段执行此操作(如果使用)或在 /etc/profile 中设置:

unset DISPLAY
export DISPLAY=:0

然后在 java 代码中或使用 maven 设置此属性:-Djava.awt.headless=false

解决方案 13:

使用以下命令检查$DISPLAY变量是否设置:

echo $DISPLAY

如果未设置显示变量,请运行以下命令进行设置,(即使已设置,您也可以在会话中使用下面的命令)

export DISPLAY=:0.0

在油灰也有x显示位置:0.0

解决方案 14:

我使用 Xming 时也遇到了类似的错误。采取以下步骤来修复此问题:

  1. 在 Xming 启动中选中“无访问控制”复选框。

  2. 在 putty 中运行以下命令:DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

替换XXX.XXX.XXX.XX为您的 IP 地址。

解决方案 15:

解决了。​​我只需注销并使用 xorg 登录!

解决方案 16:

Michael-O 给出了解决该问题的有用方法。另一种解决方法是使用 Putty Console 启动服务器。

解决方案 17:

就我的情况而言,我的机器上没有剩余空间,我也遇到了同样的问题。有时可能是空间问题。检查 Linux/Unix 环境中的空间,确保您的机器有足够的空间。

解决方案 18:

对于 Ubuntu 17.10 安装 X 虚拟帧缓冲区(xvfb)

apt install xvfb

并将这些行添加到 /etc/profile 文件中...

# Start the X virtual frame buffer (Xvfb)
if [ -f /usr/X11R6/bin/Xvfb ]; then
/usr/X11R6/bin/Xvfb :1 -screen 0 1366x768x32
fi

# Set the DISPLAY variable for the X virtual frame buffer (Xvfb)
export DISPLAY=localhost:1.0

解决方案 19:

我已经通过使用 Xorg 登录解决了这个问题。默认情况下,我使用 Wayland。看起来 Wayland 消除了 Xorg 的大部分设计缺陷,但它也有自己的问题。在此处输入图片描述

解决方案 20:

我在正在使用的 Linux 服务器上遇到了同样的问题。将 Java 连接到 X11 显示器在头节点上有效,但在其他节点上无效。联系管理员后,发现我们当前版本的作业调度系统 (SLURM) 不支持 X11 转发。他们必须更新 SLURM(较新版本的 SLURM 支持它)才能使其正常工作。

解决方案 21:

我让它工作的唯一方法是使用模板运行脚本。例如 sudo ./glassfish-3.1.2.2-unix.sh -s template

这将以静默模式安装 Glassfish。http: //docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html

解决方案 22:

我在远程运行jconsole命令时遇到了和你一样的错误。我想修改在远程Linux主机上运行的jconsole的一个参数,我可以使用secureCRT登录主机,终端会抛出这个错误信息。幸运的是,当我使用Putty时,一切正常。奇怪....

解决方案 23:

如果您在 Hudson 中看到此错误,请尝试从您的主目录中删除 .java 目录,它可能会对您有用。

解决方案 24:

如果您从 Jenkins 触发代码,启用选项“在构建之前启动 Xvfb,在构建之后关闭”可能会有所帮助。这对我很有帮助。

解决方案 25:

更改为另一个用户并尝试除 root 之外的其他用户。它对我有用。

解决方案 26:

我只是在运行 ./studio.sh 之前没有退出 root 权限,一切就绪。

解决方案 27:

就我而言,此错误与 DISPLAY 端口无关。我尝试将 XML 加载到 Windchill(PLM 软件)中,但终端上只收到上述错误。在日志文件中,我发现报告我的 XML 文件已损坏。也许有人遇到类似的问题,可以使用此答案。

解决方案 28:

我的问题出在防火墙上。暂时禁用它。

[编辑] 并且,服务器主机名指向另一个 IP。将其设置为简单的 localserver。strace xclock有助于调试此问题。

解决方案 29:

对我来说,以上方法都不起作用,但经过长时间的搜索,这个对我有用。

export DISPLAY=localhost:20.0

解决方案 30:

  1. 导出本地主机:1

  2. -Djava.awt.headless=true

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2606  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1558  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   40  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   38  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   33  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用