Linux上 Can't connect to X11 window server using XX as the value of the DISPLAY 错误解决方法

摘要:
例如更改staff用户为weblogic用户组:[root@localhost~]#usermod-gweblogicstaff

在Linux上运行需要图形界面的程序时出现如下错误提示:

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) 

错误原因:

  1. Linux默认情况下是启动x11 windows server的,而且它是与windows的图形工具显示相关;
  2. 变量DISPLAY的值与程序界面显示在机器的哪个图形化终端有关,通过执行who命令和who am i 命令,可以知道当前图形化终端是第n个(如下是第2个),那么变量DISPLAY的值应该是IP:(n-1)或者:(n-1)(如下是:1.0),只有这样java图形程序的界面才能正常显示出来。
[root@localhost ~]# who
staff   :0    2016-01-09 13:18(:0)
weblogic   pts/1   2016-01-09 13:42(:0)
[root@localhost ~]# who am i
weblogic   pts/1   2016-01-09 13:42(:0)
[root@localhost ~]# echo $DISPLAY
:0

解决办法:
笔者的错误是使用Centos桌面版界面,使用了staff用户登录,所以图形工具已经被staff用户所在的用户组所占用,因此weblogic用户组无法使用图形工具,只需把weblogic和staff两个用户变为一个组,或者使用weblogic用户登录Centos桌面版系统即可。
例如更改staff用户为weblogic用户组:

[root@localhost ~]# usermod -g weblogic staff

免责声明:文章转载自《Linux上 Can't connect to X11 window server using XX as the value of the DISPLAY 错误解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MeteoInfo-Java解析与绘图教程(三)分享在Windows电脑申请ios证书上架App Store下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)

  虚拟机中操作系统。CentOs(无图形界面)   没有图形界面的linux,我也没有配置网络,现在需要把文件复制到linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件。 1、VMware中设置USB的属性   编辑虚拟中系统信息   USB的三个信息必须全部勾选 2、开启VMware的USB服务   记得查看一下是否开启改USB服务...

linux 根目录扩容方法

准备知识 linux volume 1.(PV)physical volume disk ; 物理硬盘 物理硬盘需要转换成lvm(logic volume manage)可识别的状态,将磁盘的system id 转换成8e(lvm的识别码),再通过 pvcreate转换成PV,这样才能对磁盘加以利用 2.(VG) volume group 磁盘组, 由p...

Redis服务启动失败,提示:redis-server:command not found

今天我开始做主从复制的集群模式的测试,所以需要再装一个Linux操作系统,我在虚拟机里已经安装了一个Linux操作系统,Redis也已经配置好了。今天打算再安装一个Linux操作系统,Linux系统的安装过程很简单,就不多说了,如果大家想看,请查看我的另一篇文章《Redis进阶实践之一VMWare Pro虚拟机安装和Linux系统的安装》。 Linux操作...

linux安装python3

--linux安装python3 centos系统本身默认安装有python2.x,可通过python --version 查看系统自带的python版本,有一些系统命令需要用到python2,安装python3时不能卸载python2。 1、安装依赖包                                                   ...

QEMU简单使用

Qemu使用手册快速启动在我们下载并解压linux镜像(linux.img)以后,我们可以输入下面的命令来启动:qemu linux.img这样Linux就会启动并会展示给我们一个提示.调用用法:qemu [option] [disk_image]disk_image是代表IDE的硬盘的硬盘镜像.一般选项:-M machine 选择模拟的机器(我们可以输入...

[Linux环境编程] Linux系统命令“ls -R”的实现

Linux系统命令“ls -R”的实现   一、基本概念1、“ls -R”的意义   递归处理,将指定目录下的所有文件及子目录一并显示。   例: ls   -R   ./testdir1/     ./testdir1/:    test1.c   test1.txt   test2.txt   testdir2     ./testdir1/testd...