zoukankan      html  css  js  c++  java
  • Linux上 Can't connect to X11 window server using XX as the value of the DISPLAY 错误解决方法

    在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
  • 相关阅读:
    [macOS] git忽略所有的.DS_Store文件
    [macOS] finder变慢提速
    [React Native] change port when running react native
    转载: 我如何使用 Django + Vue.js 快速构建项目
    MySQL Connector/NET 使用小结(踩坑之路)
    C# 控制台程序(Console Application )启动后隐藏
    解决 pycharm can not save setting
    ubuntu 16.04 LTS 安装 teamviewer 13

    Python 编程规范梳理
  • 原文地址:https://www.cnblogs.com/mjbrian/p/9020599.html
Copyright © 2011-2022 走看看