1.問題
平常都是windows這臺主機通過MobaXterm遠程到另外一臺Ubuntu主機,今天突然smargit無法使用。
報錯:
root@chenwr-pc:/home/workspace/project/grpc_project/build_ec20_grpc_demo# smartgit
** (java:10104): WARNING **: Could not open X display
Error invoking SmartGit
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at com.syntevo.QBootLoader.main(SourceFile:102)
Caused by: org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
at org.eclipse.swt.SWT.error(SWT.java:4621)
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:1033)
at org.eclipse.swt.widgets.Display.create(Display.java:1013)
at org.eclipse.swt.graphics.Device.<init>(Device.java:175)
at org.eclipse.swt.widgets.Display.<init>(Display.java:578)
at org.eclipse.swt.widgets.Display.<init>(Display.java:569)
at smartgit.WX.a(SourceFile:121)
at smartgit.apj.a(SourceFile:101)
at com.syntevo.smartgit.q.a(SourceFile:302)
at com.syntevo.smartgit.q.a(SourceFile:247)
at smartgit.apE.a(SourceFile:68)
at com.syntevo.smartgit.SmartGit.main(SourceFile:11)
... 5 more
2.解決辦法
確認/etc/hosts文件內容是否有改動過。如沒有該語句127.0.0.1 localhost,添加即可。
root@chenwr-pc:~# cat /etc/hosts
127.0.0.1 localhost
問題解決
3.解決過程
刪除smartgit安裝包後重新解壓依然存在這個問題,於是測試了下gedit這個命令。也存在無法打開編輯的圖形化界面。
root@chenwr-pc:/home/workspace/chenwr/study/C# gedit Chapter9.c
** (gedit:2896): WARNING **: Could not open X display
(gedit:2896): Gtk-WARNING **: cannot open display: localhost:10.0
剛好看到關鍵字localhost,想起來上週編寫IP域名映射接口,測試的時候有修改過這個文件。因原始被我刪除了,於是我在虛擬機Ubuntu下查看了/etc/hosts文件默認內容。
127.0.0.1 localhost
127.0.1.1 chenwr-VirtualBox
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
果然是因爲localhost 映射到測試IP,沒有設置成127.0.0.1這個迴環IP才導致上述問題。