这里写自定义目录标题
ubuntu下执行goland.sh出错
记录一下ubuntu下执行go的开发环境goland时踩的坑。
下载好goland后,执行./goland.sh报错:
Exception in thread "JobScheduler FJ pool 4/15" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit
at java.desktop/sun.awt.PlatformGraphicsInfo.createToolkit(PlatformGraphicsInfo.java:40)
at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:599)
at com.intellij.openapi.wm.impl.X11UiUtil$Xlib.getInstance(X11UiUtil.java:68)
at com.intellij.openapi.wm.impl.X11UiUtil.(X11UiUtil.java:238)
at com.intellij.idea.StartupUtil.logEssentialInfoAboutIde(StartupUtil.java:882)
at com.intellij.idea.StartupUtil.lambda$start$10(StartupUtil.java:238)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
2022-09-20 20:13:06,484 [ 9380] SEVERE - #c.i.i.StartupUtil - Cannot start app
com.intellij.ide.plugins.StartupAbortedException: Cannot start app
at com.intellij.idea.StartupUtil.lambda$start$15(StartupUtil.java:265)
at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit
```go
这里是引用
Linux 中 DISPLAY 环境变量设置
linux 中有显示图形需求的为xClient,真正显示图形的为xServer, DISPLAY 环境变量用于设置图形输出到的xServer,其形式为
其形式为 x S e r v e r _ i p : d i s p l a y _ n u m . s c r e e n _ n u m
所以如果我们要指定显示位置的话,
- 启动一个 xServer
- 指定linux 中 DISPLAY 环境变量到启动的xServer
ps: 作者使用情况是,xClient(有显示需求的机器)和 xServer(真正显示的机器)在一个局域网下。如果不在同一个局域网的话,可直接使用 MobaXterm
MobaXterm
MobaXterm 已经帮我们了做 了很多事情了,它自带了xServer,并且在使用MobaXterm时登录 ssh 时已经指定了 xClient X11Forwarding 的值。
懂点原理
下面的情况是在同一个局域网环境下进行的。
启动xServer
由于题主的电脑是Windows, 就使用了 VcXsrv 作为xServer,下载链接见 [VcXsrv](VcXsrv Windows X Server download | SourceForge.net) 。安装后在桌面会看到一个 XLaunch 的图标,打开之后,进行一步步设置即可。
之后点击完成就可以了。
指定linux DISPLAY 环境变量
登录上 xClient (有显示需求的机器)后执行如下命令
export DISPLAY=192.168.1.50:13.0
- 1
-
192.168.1.50 指 xServer 的 ip 地址,
-
13 指 刚刚启动 xServer 时指定的display_num
-
0 指 screen num(写成其他值貌似不行)
测试是否成功
xclock
- 1
在linux (题主是ubuntu) 命令行执行上述命令就可以看到自己的 windows 上弹出一个小窗口了,就说明配置成功了。耶