其实解决这个问题的过程还挺曲折的,我不打算直接给出顺利的解决方案,所以建议先看完,再动手操作,否则会踩老坑,以下是折腾记录:
问题:fcitx搜狗输入法在idea环境中文输入不跟随光标
解决方案参考链接: https://blog.csdn.net/u011166277/article/details/106287587
辛酸史:
先下载JetBrainsRuntime源码,https://github.com/JetBrains/JetBrainsRuntime
因为github很慢,所以到https://gitee.com/上导入github进行下载,还有两种下载方式,教程都在https://zhuanlan.zhihu.com/p/121015450
代下载网站https://shrill-pond-3e81.hunsh.workers.dev/ http://g.widyun.com/ 网速慢的话容易过期
下载完JetBrainsRuntime之后下载idea.patch https://github.com/prehonor/myJetBrainsRuntime
然后把idea.patch拷贝到JetBrainsRuntime根目录
git checkout cfc3e87f2ac27a0b8c78c729c113aa52535feff6 (这一步经过测试,并不需要,用最新的就好)
git apply idea.patch
然后根据官方教程编译就行了,但是,别信官方的,经过测试docker打包出现未知错误,还不知道咋查,ubuntu版本低了还不行,一会儿404,一会儿缺jdk11,拖过来一个jdk11又说glibc版本不够,安装glibc直接整个系统挂了,所有命令都不能用了,所以还是开个虚拟机,直接上ubuntu20吧,然后按照官方的教程编译
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev
$ cd JetBrainsRuntime
$ sh ./configure --disable-warnings-as-errors
$ make images
你以为这就完了吗?中途会直接出现killed错误,所以,内存至少2G,swap单开一个3G的
$ dd if=/dev/zero of=swapfile bs=1024 count=310241024
$ sudo mkswap swapfile
$ sudo swapon swapfile
$ free -h
然后照常make images,编译完了之后,会生成jdk,从虚拟机中拷贝出来
sudo scp -o PasswordAuthentication=yes -r 用户名@虚拟机ip:/home/用户名/JetBrainsRuntime/build/linux-x86_64-normal-server-release/images/jdk /usr/lib/jvm/java-11.0.7-jetbrains
如果你以为按照教程里export IDEA_JDK=/usr/lib/jvm/java-11.0.7-jetbrains 就可以启动,那就又错了,还会报错
/usr/lib/jvm/java-11.0.7-jetbrains/bin/java: symbol lookup error: /usr/lib/jvm/java-11.0.7-jetbrains/lib/libnio.so: undefined symbol: initInetAddressIDs
你以为只要ldd 看到libjvm.so => not found就应该把/usr/lib/jvm/java-11.0.7-jetbrains/lib/server/libjvm.so 加到环境变量就行了?不,亲自试验过了,没用,对比了一下正常启动的idea,发现libnet.so路径不对,正常要取jdk里的,于是又加入环境变量,这回启动两次居然直接crash了
最后,经过一系列折腾,搞出一个最佳解决办法,修改启动文件
$ sudo vim /opt/intellij-idea-ultimate-edition/bin/idea.sh
在开头加上
export LD_LIBRARY_PATH=/usr/lib/jvm/java-11.0.7-jetbrains/lib:$LD_LIBRARY_PATH && export IDEA_JDK=/usr/lib/jvm/java-11.0.7-jetbrain
这回终于能启动成功了,编译好的jdk最好保存一下,别再这么折腾了