由于要学习hadoop,就在ubuntu下创建了一个hadoop用户,但是 eclipse是在naomi用户下装的,在root和naomi用户下都能正常启动,但是一旦切换到hadoop用户,试着启动eclipse,就会 cannot open display, no protocol specify
打开日志文件后的信息为
org.eclipse.swt.SWTError: No more handles[gtk_init_check() failed]
原因:
当使用su 到另外一个用户运行某个程序,而这个程序又要有图形显示的时候,就有可能有下面提示:
No protocol specified
(gedit:14333): Gtk-WARNING **: cannot opendisplay: :0.0
这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户(不是hadoop用户,是root用户)执行如下命令。
xhost +(别忘了空格)
通过执行这条命令,就授予了其它用户访问当前屏幕的权限,于是就可以以另外的用户运行需要运行的程序了
本文参考:http://java-doom.iteye.com/blog/1738370
http://blog.csdn.net/unflynaomi/article/details/38340383