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

2019-05-13 13:25发布

我用java连接本地主机的端口10.0,显示X11有一个脚本

但我总是得到这个错误

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

Answer 1:

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

export DISPLAY=:0


Answer 2:

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



Answer 3:

卸下显示屏变量

unset DISPLAY

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

它也可以很舒服将其添加到.bash_profile中有专门的应用服务器/工具的用户。



Answer 4:

我认为你是在须藤mode.Please结账工作到用户模式,然后再试一次



Answer 5:

如果有人试图在CI通过运行Maven的万无一失,插件自动单元测试(詹金斯,..),并获得上述的错误,一定要更新你的保命插件的配置:

<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>


Answer 6:

这将解决这个问题:

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


Answer 7:

经过与无头的Fedora 22上树莓派2安装的GlassFish徒劳的数天,下面为我工作顺利

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

得到我的帮助从这里



Answer 8:

第一:启动XQuartz

第二:SSH -X用户@ip地址

...:启动过程

如果使用ssh,然后开始XQuartz你会得到错误



Answer 9:

对我来说,登录为-Y而不是-X工作。

如果你已经有了不信任的X11如下图所示,然后尝试-Y标志,而不是(如果你信任的主机):

警告 :不信任的X11转发设置失败:不产生xauth的关键数据



Answer 10:

解决了。 我只是注销和一个Xorg登录!



Answer 11:

迈克尔-O了解决问题的有用的方法。 解决这个另一种方式是通过启动与腻子控制台服务器。



Answer 12:

就我而言,没有留在我的机器空间和我面临同样的问题。 有些时候,它可能是空间的问题。 检查你的Linux / Unix环境下的空间,并确保你的机器有足够的空间。



Answer 13:

我使用的Xming并得到了类似的错误。 采取下面的步骤来解决这个问题:

  1. 在推出下的Xming检查框没有访问控制。
  2. 在油灰运行下面的命令: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

更换XXX.XXX.XXX.XX您的IP地址。



Answer 14:

如果使用或设置/ etc / profile文件首先做到这一点无论是在詹金斯的构建阶段:

unset DISPLAY
export DISPLAY=:0

然后设置该属性或者在Java代码或使用maven:-Djava.awt.headless =假



Answer 15:

我把它拿到工作的唯一方法是运行与模板脚本。 例如须藤./glassfish-3.1.2.2-unix.sh -s模板

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



Answer 16:

我遇到与你相同的错误,当我在远程运行JConsole的命令。 我想修改在JConsole的一个远程Linux主机上运行的参数,我可以登录主机使用的SecureCRT,终端抛出此错误信息。 幸运的是,使用腻子时,它的确定。 奇怪的....



Answer 17:

如果你看到哈德森此错误,请从你的home目录中删除的.java目录,它可以为你工作。



Answer 18:

如果在远程服务器上启动应用程序,同时通过SSH登录,然后另一种方法是用SSH开始-x参数或添加ForwardX11 no在你/etc/ssh/ssh_config 。 在这种情况下,ssh将不会创建环境变量DISPLAY。



Answer 19:

如果你触发从詹金斯你的代码,启用选项“启动Xvfb来构建之前,并关闭它后,”可能会有帮助。 它帮助我。



Answer 20:

更改为另一个用户,并尝试不同的根源。 这个对我有用。



Answer 21:

我只是不运行./studio.sh所有集之前注销根。



Answer 22:

为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


Answer 23:

在我的情况下,这种错误是不相关的显示端口。 我试图加载XML到Windchill(一个PLM-软件)和在终端上接收到的仅上述错误。 在日志文件中,我发现了报告, 我的XML文件已损坏 。 也许有人有类似的问题,并可以使用这个答案。



Answer 24:

对我来说,问题是,未安装了xorg-X11-XAUTH。 我安装了它,然后它的工作。

我现在所拥有的包是:

  • 的libx11-共1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • 的xorg-X11-DRV-ATI-firware-7.6.1-2.el6.noarch
  • 的xorg-X11-XAUTH-1.0.9-1.el6.x86_64


文章来源: Java Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable