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

我有一个脚本使用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

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

 export DISPLAY=:0 

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

删除DISPLAYvariables

 unset DISPLAY 

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

将其添加到.bash_profile以便专用的应用程序服务器/工具用户也可以很舒服。

如果有人试图通过CI(jenkins,..)上的maven-surefire-plugin运行自动化unit testing,并得到上述错误,请务必更新您的surefire插件configuration:

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

这将解决它:

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

经过几天的无花果努力安装glassfish覆盆子pi 2无头fedora 22,下面的工作没有一个顺利

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

从这里得到了我的帮助

首先:启动XQuartz

其次:ssh -X user @ ip_address

…:开始你的过程

如果你ssh,然后启动XQuartz你会得到这个错误

在我的情况下,我的机器中没有空间,我面临同样的问题。 有时候这可能是空间问题。 检查你的Linux / Unix环境中的空间,并确保你的机器有足够的空间。

我想你是在sudo模式下工作。请检查到用户模式,然后再试一次

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

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

我在远程运行jconsole命令时遇到同样的错误。 我想在远程Linux主机上运行的jconsole上修改一个参数,我可以使用secureCRTlogin主机,terminal抛出这个错误信息。 幸运的是,使用腻子时,没关系。 奇怪的….

如果您在Hudson中看到这个错误,请尝试从您的主目录中删除.java目录,它可能适用于您。

如果你在用sshlogin的时候在远程服务器上启动应用程序,那么另一种方法是用-x参数启动ssh,或者在你的/etc/ssh/ssh_config添加ForwardX11 no 。 在这种情况下,ssh将不会创build环境variablesDISPLAY。

Michael-O给出了解决问题的有效方法。 解决这个问题的另一种方法是使用Putty控制台启动服务器。

我正在使用Xming,并得到类似的错误。 采取以下步骤解决问题:

  1. 在Xming启动时检查箱子没有访问控制。
  2. 在putty中运行以下命令: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

XXX.XXX.XXX.XXreplace为您的IP地址。

对于我login,作为-Y而不是-X工作。

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

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

如果从Jenkins触发代码,启用“在构build之前启动Xvfb并在之后closures”选项可能会有所帮助。 它帮助了我。

更改为另一个用户,并尝试除根。 这个对我有用。

对我来说,问题是没有安装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