文档章节

Can't connect to X11 window server using ':1.0' as

YuanyuanL
 YuanyuanL
发布于 2015/02/06 14:17
字数 890
阅读 5273
收藏 0

错误:Xshell远程连接或者本地Linux OS下启动java程序报错:
No X11 DISPLAY variable was set, 
或者 Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.

错误详情:

[root@neokylin import_jre]# ./run_linux64
/root/lyy/import_jre
/root/lyy/import_jre/lib
/root/lyy/import_jre/jre8_openjdk64/bin
classpath is: /root/lyy/import_jre/lib/myapp.jar:/root/lyy/import_jre/jre8_openjdk64/lib/ext:/root/lyy/import_jre/lib/lib/commons-io-2.0.1.jar:/root/lyy/import_jre/lib/lib/dom4j-1.6.1.jar:/root/lyy/import_jre/lib/lib/hgdb-1.3-jdbc41.jar:/root/lyy/import_jre/lib/lib/log4j-1.2.17.jar:/root/lyy/import_jre/lib/lib/poi4excel.jar:/root/lyy/import_jre/lib/lib/slf4j-api-1.7.2.jar:/root/lyy/import_jre/lib/lib/slf4j-log4j12-1.7.2.jar
run now...
No protocol specified
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:66)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:187)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:146)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:123)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at java.awt.Toolkit$2.run(Toolkit.java:860)
at java.awt.Toolkit$2.run(Toolkit.java:855)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854)
at javax.swing.UIManager.getSystemLookAndFeelClassName(UIManager.java:611)
at hgdbmonitor.view.MonitorView.main(MonitorView.java:2147)

错误原因:找错误时应该去看错误提示Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.从中我们找到了两个关键点:x11 windows server和变量DISPLAY。

 

分析:

    1.通过查询我们得知,Linux默认情况下是启动x11 windows server的,而且它是与windows的图形工具显示相关;

    2.变量DISPLAY的值与程序界面显示在机器的哪个图形化终端有关,通过执行who命令和who am i 命令,可以知道当前图形化终端是第n个(如下是第2个),那么变量DISPLAY的值(值格式是I P:A.B, 其中B默认是0)应该是  IP:(n-1) 或者 :(n-1)

 

解决方法1
首先确保服务器的ssh设置中配置为 X11Forwarding yes
    参考:Xshell: https://www.netsarang.com/tutorial/xshell/1018/Using_X11_forwarding
    vi /etc/ssh/sshd_config
    配置:X11Forwarding yes
    然后重启服务service sshd restart

然后确保xshell客户端配置为:
    属性-连接-SSH-隧道:
    X11转移-(选中)转发X11连接到-(选中)Xmanager

然后打开xshell会话后:
    echo $DISPLAY 查看是有值的
    此时直接运行脚本可以打开程序GUI界面

 

解决方法2

当DISPLAY环境变量未自动生成时,手动设置:

本地设置:
export DISPLAY=:0.0

远程设置:
who
who am i
根据结果确定x的具体数值
export DISPLAY=localhost:x.0

注意:变量DISPLAY的值与程序界面显示在机器的哪个图形化终端有关,通过执行who命令和who am i 命令,可以知道当前图形化终端是第n个(如下是第2个),那么变量DISPLAY的值(IP:A.B, 其中B默认是0)应该是IP:(n-1)或者:(n-1)(如下是:1.0),只有这样java图形程序的界面才能正常显示出来。

[root@neokylin import_jre]# who
root   tty2    2015-02-06 13:18
root   pts/1   2015-02-06 13:42(192.168.100.126)
highgo pts/2   2015-02-06 13:42(:1.0)
[root@neokylin import_jre]# who am i
highgo pts/2   2015-02-06 13:42(:1.0)
[root@neokylin import_jre]# echo $DISPLAY
:1.0

              如果DISPLAY的值不匹配,可以询问该机器的管理员查看机器是否正常开启,或者找其他图形终端的访问者让其关闭远程桌面访问,仅保留你的远程桌面,然后再尝试重新执行程序。

参考资料:http://www.itpub.net/thread-1633000-1-1.html

© 著作权归作者所有

YuanyuanL

YuanyuanL

粉丝 153
博文 330
码字总数 194412
作品 0
济南
高级程序员
私信 提问
CentOS6.2在安装oracle10g的时候总报下面的错误

Starting Oracle Universal Installer... Checking installer requirements... Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or as......

超人不会飞
2012/02/16
1K
5
Crystal Clear出现Could not initialize class sun.a...

系统使用Websphere 5,相应的jdk是1.3,所以无法使用headless模式-Djava.awt.headless=true解决这个问题。 在jdk1.3下的有几个比较重要的步骤: 出现java.lang.NoClassDefFoundError: sun/a...

querychinesesto
2012/06/01
73
0
验证码无法显示,服务器端出现异常:Could not initialize class sun.awt.X11GraphicsEnvironment

异常信息: Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment Caused by: java.lang.InternalError: Can't connect to X11 window s......

sjg11
2014/09/02
0
0
VirtualBox 4.3.22 Build 98236 发布

免费虚拟机软件VirtualBox今天更新至4.3版本,开始支持多点触控平台,最新的CPU等其他新功能,新版提升了各种硬件设备及操作系统的支持度。虚拟机允许用户在Mac上运行多种操作系统,对于普通...

oschina
2015/02/13
3.3K
32
OpenVZ with X11 and VNC server

apt-get install screen xfce4 mousepad thunar-archive-plugin vnc4server vnc-java xserver-xorg-core xdm xinetd ----------------------------------------- vnc4server :55 inter passw......

神勇小白鼠
2011/08/24
195
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA Maven project: 'xxx/pom.xml' already exists in VFS

Failed to create a Maven project: ‘xxx/pom.xml‘ already exists in VFS idea创建项目后,发现项目有问题,删除后重新创建,提示错误如下。 解决办法 1.通过idea打开任意一个项目 2.File...

国产大熊猫
52分钟前
7
0
Flutter之 State 生命周期

State 的生命周期,指的是在用户参与的情况下,其关联的 Widget 所经历的,从创建到显示,再到更新最后到停止,直至销毁等各个阶段 不同的阶段涉及到特定的任务处理 State 的生命周期流程如下...

過愙
58分钟前
11
0
零基础一年拿下BAT三家offer

背景 1、本人本科一本双非垫底的那种,硕士211。本硕电子通信,完全0基础,转行一年。 2、研一上第一学期上课+外派到老师合作公司写MATLAB。去年4月开始学习Java。 起步 1、实话说,刚决定转...

gzc426
今天
6
0
并行和并发的区别

并行和并发的区别 并行(Parallel)的重点在于同一时间点多个任务同时进行; 并发(Concurrent)的重点在于同一时间段有多个任务执行,不要求某个时间点有多个任务同时进行。...

StupidZhe
今天
38
0
java内存泄漏问题

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。Java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中...

Bb进阶
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部