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

2024-10-14 08:40:00
admin
原创
66
摘要:问题描述:我有一个使用 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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用