通过SSH Secure Shell连到linux主机,在命令行下启动Java程序,该Java程序调用了SWT的接口,出现异常
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
Linux主机已经默认启动图形界面。
网上查找资源,说明是请求不到display资源造成的,在SSH下执行xclock命令,提示
Error: Can't open display: localhost:0
Error: Can't open display: localhost:0
看错误信息,默认使用diplay是0哦.
解决办法:
vncserver -kill :1
vncserver :1
export DISPLAY=localhost:1
执行xhost,允许其他机器连接,可以输入文字或提示“access control disabled, clients can connect from any host”才正确。
注意vncserver后面有个空格。其实就是display为0的被占用了,换一个做为当前的dispay就行了。
通过SSH Secure Shell执行
./startup.sh
可以成功运行,但关闭SSH客户端连接后,程序也自动终止。可以使用下面的命令使程序变为后台进程。
nohup ./startup.sh &
SSH客户端关闭后,仍在运行。如果要停止,要先找到其PID,然后kill %pid%
查看所有进程,及执行名
ps aux
查找java为启动名的进行
ps aux |grep java