我有一个脚本使用java连接到localhost
端口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
答案 0 :(得分:49)
您需要在启动时指定-Djava.awt.headless=true
参数。
答案 1 :(得分:34)
删除DISPLAY变量
unset DISPLAY
这在大多数情况下都有帮助(例如,启动应用程序服务器或其他基于java的工具),并避免修改所有那么多命令行。
将它添加到专用的app-server / tools用户的.bash_profile中也很舒服。
答案 2 :(得分:32)
这个命令帮助我解决了这个问题:
export DISPLAY=:0
答案 3 :(得分:13)
我认为您正在使用sudo模式。请检查用户模式并再试一次
答案 4 :(得分:9)
如果有人试图通过CI上的maven-surefire-plugin运行自动单元测试(jenkins,..),并且得到上述错误,请务必更新您的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>
答案 5 :(得分:6)
这将解决它:
/usr/bin/java -Djava.awt.headless=true $Your_program
答案 6 :(得分:4)
经过几天徒劳的努力,用无头软呢帽22在覆盆子pi 2上安装玻璃鱼,下面为我工作顺利
unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar
从here
获得了我的帮助答案 7 :(得分:3)
我以 -Y 而非-X工作方式登录。
如果您有不受信任的X11,如下所示,请尝试使用-Y标志(如果您信任主机):
警告:不受信任的X11转发设置失败:未生成xauth密钥数据
答案 8 :(得分:3)
如果您尝试使用su导出显示,但仍然不起作用。 这对我有用。尝试对sudo用户进行X11转发。
使用-X选项和ssh连接远程主机。
# 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
答案 9 :(得分:3)
首先:启动XQuartz
第二名:ssh -X user @ ip_address
...:开始你的过程
如果您使用ssh然后启动XQuartz,您将收到该错误
答案 10 :(得分:2)
已解决。我只是注销并使用xorg登录!
答案 11 :(得分:1)
我在使用的Linux服务器上遇到了同样的问题。将Java连接到X11显示器只能在头节点上工作,而不能在其他任何节点上工作。与管理员联系后,事实证明我们的作业计划系统(SLURM)的当前版本不支持X11转发。他们必须更新SLURM(新版本的SLURM支持它)才能正常工作。
答案 12 :(得分:1)
在我的情况下,我的机器中没有剩余空间,我遇到了同样的问题。 有时可能是空间问题。检查Linux / Unix环境中的空间,确保您的计算机有足够的空间。
答案 13 :(得分:1)
我正在使用Xming并遇到类似的错误。采取以下步骤来解决问题:
XXX.XXX.XXX.XX
将 foreach ($rowData as $row) : $id = $row->_kpnID; ?>
<tr class="editable details-control collapsed" data-values="action" id="{{ $id }}"...
替换为您的IP地址。
答案 14 :(得分:1)
这解决了我的问题
xhost +
但是请注意,xhost +
会完全停用身份验证,并允许所有人访问屏幕上的所有应用程序。
xhost +si:localuser:root
似乎与正确的身份验证相似。
答案 15 :(得分:1)
使用以下命令检查是否设置了$ DISPLAY变量:
回显$ DISPLAY
如果未设置显示变量,请运行以下命令进行设置(即使已设置,会话中的变量也可以低于1)
export DISPLAY =:0.0
腻子中的的x显示位置也为:0.0
答案 16 :(得分:1)
Michael-O提供了解决问题的有用方法。另一种解决方法是使用Putty Console启动服务器。
答案 17 :(得分:1)
首先在Jenkins的构建阶段(如果使用)或在/ etc / profile中进行设置:
unset DISPLAY
export DISPLAY=:0
然后使用Java代码或使用Maven设置此属性: -Djava.awt.headless = false
答案 18 :(得分:0)
对于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 :(得分:0)
对我来说,以上方法均无效,但经过长时间的搜索,该方法对我有效。
export DISPLAY=localhost:20.0
答案 20 :(得分:0)
我让它工作的唯一方法是使用模板运行脚本。例如sudo ./glassfish-3.1.2.2-unix.sh -s template
这将以无提示模式安装Glassfish。 http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html
答案 21 :(得分:0)
答案 22 :(得分:0)
我的问题出在防火墙上。暂时禁用它。
[编辑]并且,服务器主机名指向另一个IP。将其设置为简单的localserver。 strace xclock
帮助调试了这个问题。
答案 23 :(得分:0)
就我而言,此错误与DISPLAY端口无关。我试图将XML加载到Windchill(一种PLM软件)中,并且在终端上仅收到上述错误。在一个日志文件中,我找到了我的XML文件已损坏的报告。也许有人遇到类似的问题,可以使用此答案。
答案 24 :(得分:0)
我在运行之前没有注销root ./studio.sh所有设置。
答案 25 :(得分:0)
更改为其他用户并尝试除root。它对我有用。
答案 26 :(得分:0)
如果您从Jenkins触发代码,启用选项“在构建之前启动Xvfb,并在之后将其关闭”可能有所帮助。它帮助了我。
答案 27 :(得分:0)
当我在远程运行jconsole命令时,我遇到了同样的错误。我想修改一个在远程Linux主机上运行的jconsole的参数,我可以登录主机使用secureCRT,终端抛出这个错误信息。幸运的是,当使用Putty时,没关系。奇怪的...
答案 28 :(得分:0)
如果您在Hudson中看到此错误,请尝试从主目录中删除.java目录,它可能适合您。
答案 29 :(得分:0)
如果您在使用ssh登录时在远程服务器上启动应用程序,则另一种方法是使用-x
参数启动ssh或在ForwardX11 no
中添加/etc/ssh/ssh_config
。在这种情况下,ssh不会创建环境变量DISPLAY。
答案 30 :(得分:-1)
对我来说,问题是 xorg-x11-xauth 没有安装。我安装它然后它工作。
我现在拥有的包裹是: