java.lang.reflect.InvocationTargetException
Casued by:
java.lang.unsupportedOperationException:Unable to open DISPLAY
出现这个问题,关键在于了解DISPLAY这个系统变量。
DISPLAY变量是用来设置将图形显示到何处.比如CENTOS,你用图形界面登录进去,DISPLAY自动设置为DISPLAY=:0.0表示显式到本地监视器,那么通过终端工具(例如:xshell)进去,运行图形界面的程序,如果没有设置,系统是不允许程序启动的。
解决方案(Linux命令):
export DISPLAY=DISPLAY值
xhost +
查看DISPLAY值有多种方法,举例四种:
(1)执行命令echo $DISPLAY
(2)执行命令printenv,然后找到DISPLAY
(3)执行命令vncserver(需安装vncserver),查看结果:New 'DISPLAY值(用户名)' desktop is DISPLAY值
(4)执行命令xdpyinfo(需安装图形显示驱动程序),查看结果name of display: DISPLAY值
关于vncserver:Virtual Network Console Server,即虚拟网络控制台服务器。VNC是一款优秀的远程控制工具软件,基于 UNIX 和 Linux 操作系统免费开源。
关于xdpyinfo:查看到当前图形显示驱动程序的详细信息
关于xhost:
xhost控制X Server访问权限。X Server是Linux系统里面图形接口服务器的简称。
xhost + 使所有用户都能访问X Server
xhost + ip 使ip上的用户能够访问X Server
xhost + nis:user@domain 使domain上的nis用户user能够访问
xhost + inet:user@domain 使domain上的inet用户能够访问。