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,并得到类似的错误。 采取以下步骤解决问题:
- 在Xming启动时检查箱子没有访问控制。
- 在putty中运行以下命令:
DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY
DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY
将XXX.XXX.XXX.XX
replace为您的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