JB Client简介
JBC是JB实现远程开发的工具,有单独程序或集成在2021.3版本的各IDE中,本机只负责显示、渲染代码等工作,重计算的任务都交由后台服务器,更重要的是直接使用了远端服务器的环境。
本文目的
当前最新版本Idea是2021.3.1,直接使用JB Client下载树莓派远端IDE是无法启动的,会一直显示启动失败,故需要对其进行手动处理。
本文使用树莓派4b + ubuntu示例。
解决树莓派启动JB Client失败的问题
单独启动测试
使用JBC下载好需要的IDE,会发现启动失败。
通过配置xrdp或使用hdmi连接显示器,使用如下命令可在ubuntu上启动liunx版的clion。
# 执行下条命令,选择no,意为将linux默认shell由dash转为bash
sudo dpkg-reconfigure dash
cd /home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/bin
./clion.sh
可见直接启动clion是可行的,故IDE是可以运行在ubuntu的树莓派4b上的。
查看log
通过分析log,可见最直接的报错为:
/home/ubuntu/.cache/JetBrains/RemoteDev-CL/_home_ubuntu_ros_demo/pid.6785.temp.jbr/bin/java.bin: cannot open shared object file: No such file or directory
那么就需要看代码了,在log中可以看到上述这个路径被赋值给TEMP_JBR了,通过grep搜索IDE路径,定位到脚本为launch.sh,过程如下:
cd /home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2
grep -ir TEMP_JBR ./*
# 这里返回行都指向一个文件,即/home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/plugins/remote-dev-server/bin/launcher.sh
由上步已经确认启动脚本位置,打开硬看,发现TEMP_JBR是/home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/jbr这个目录拷过去的,拷备过程是没有问题的,但直接在/home/ubuntu/.cache/JetBrains/RemoteDev-CL/_home_ubuntu_ros_demo/的目录中,确找不到pid.xxxx.temp.jbr,那肯定是某个脚本把这个临时目录删除了,好在这条语句还是写在launch.sh中的,即:
trap clean_up_temp EXIT INT HUP
clean_up_temp是一个清理函数,将该函数注释掉,再启动后当然还是报错,但/home/ubuntu/.cache/JetBrains/RemoteDev-CL/_home_ubuntu_ros_demo/pid.6785.temp.jbr/已经没有被删除了,进到其下的bin目录中,发现是java的相关命令,直接./java -version,发现报错:
bash: ./java: cannot execute binary file: Exec format error
尝试解决
想到应该是CPU架构不同导致的,这里我走了下弯路,用jdk替换了jbr,发现仍不可能,那么直接搜索jbr,发现它是JetBrains Runtime的缩写,是JB家自己出的东西,谷歌jbr,找到了这里:
https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr11_0_13b1751.25
那么就对了,2021.3.1对应的jbr版本是11_0_13,下载jbrsdk-11_0_13-linux-aarch64-b1751.25.tar.gz,命令如下:
cd ~/temp
wget https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-aarch64-b1751.25.tar.gz
tar zxf jbrsdk-11_0_13-linux-aarch64-b1751.25.tar.gz
mv /home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/jbr /home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/jrb.bkp
mv jbrsdk /home/ubuntu/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/jbr
再次通过JB Client启动,已经OK。
撒花