JetBrains Gateway IDEA远程开发
作者:mmseoamin日期:2023-12-14

为什么进行远程开发?

无论身处何处数秒内连接至远程环境

  1. 充分利用远程计算机的强大功能

    在任何笔记本电脑上都可以轻松工作,无论其性能如何。借助远程计算机的计算资源,充分利用最大规模的数据集和代码库。

  2. 在远程服务器上保护敏感代码

    如果将源代码存储在开发者的笔记本电脑上,那么这些设备被盗或存放不当都将是潜在的安全隐患。通过将代码专门存储在密闭、远程、由公司控制的计算机上可以消除这种风险。

  3. 保持环境一致性

    使用预先确定的工具包、运行时要求、硬件规格等确切内容重现开发环境,这样您就不会再听到“在我的计算机上没有问题呀”这样的对话了!

  4. 简化入门和技术面试

    想要充分测试候选人的技能水平或让新人尽快入门?忘掉 30 项“项目启动”清单吧 – 现在,入门就像采用编排解决方案复制远程计算机一样简单。

远程开发实现方式

具我了解,远程开发大概有以下几种方式:

  1. ssh远程直接在命令行中开发

    vim开发之类

  2. 远程桌面中直接开发

    比如:windows远程桌面,向日葵,ToDesk, VNC

  3. vscode远程开发
  4. idea远程开发

第1种在ssh中远程开发是本人用的最多的,为此我写过非常多的vim配置文章。这个优点就是比较成熟,设备兼容性好。甚至可能使用手机远程ssh进行开发。我甚至用这种方式在自家的电视上做过一段时间的开发。

第2种远程桌面中开发,我一般只是临时使用的。这种开发也不错,要说最大的缺点,也就是会有一定的延长性。画面质量也会有所下降。

上手

安装 JetBrains Gateway

安装比较简单,到这个页面下载你操作系统支持的版本就可以了。

https://www.jetbrains.com/zh-cn/remote-development/gateway/

我下载的是linux版本的。

连接ssh

首先你要有一个远程的ssh服务器,并且有用户名密码之类的。可能是购买的云服务器,也可以是某个可以远程的Linux服务器。推荐是linux,其他系统不清楚是否可以。我这里远程的是ubuntu 22.04的系统的。

New Connection

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第1张

Connect to SSH

把你的远程服务ssh信息填进去就可以了。

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第2张

Choose IDE and Project

选择在服务器上下载的IDE版本和项目目录。

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第3张

点击 Start IDE and Connect 就可以像本地一样开发项目了。非常的简单。

注册与激活

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第4张

根据提示正常激活,即可。

当然还有一种方式,可以直接到我们的远程服务器上激活。

经过上面的操作,会自动把IDEA下载到如下目录:

~/.cache/JetBrains/RemoteDev/dist/2e929559b06e5_ideaIU-2023.1/bin

可以在远程VNC中手动激活,主要可以使用一些野路子。

具体的野路子激活过程,另启一篇了。

https://blog.csdn.net/lxyoucan/article/details/130282517

自定义IDEA版本

默认只能下载最新版本的IDEA,这里有个选项可以自己上传。

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第5张

但是经过我测试2021.1.3

运行项目报错

java: Cannot run program “/home/nl/.jdks/corretto-1.8.0_372/bin/java” (in directory “/home/nl/.cache/JetBrains/RemoteDev-IU/_home_nl_workspace_helloworld/compile-server”): error=0, Failed to exec spawn helper: pid: 89541, exit value: 1

这个问题完美解决办法,我不知道。但是我换了个JDK 11的版本就发现问题成功解决了。

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第6张

网上还有一种解决办法:

https://youtrack.jetbrains.com/issue/IDEA-304440/Cannot-run-program-java-failed-to-exec-spawn-helper-exit-value-1#focus=Comments-27-6736675.0-0

File | Settings | Build, Execution, Deployment | Compiler | * build process VM options text field

-Djdk.lang.Process.launchMechanism=vfork

JetBrains Gateway IDEA远程开发,在这里插入图片描述,第7张

亲测普通java项目是可以的。

maven的项目这样设置也是可以的,我一开始不行,后来把项目关了重新开又可以了。

真实使用体验

随着刚开始的新鲜感过去后,我发现了一些让我有些不舒服的BUG。

ideaVim插件

不稳定,我在使用yy pp这样的最常见的复制粘贴操作。经常会出现失控的问题。甚至会导致IDEA崩溃。

Database

这个功能 的bug比较多,比如Ctrl+Enter 查询快捷键时灵,时不灵。特别影响心情。只能用鼠标操作。而且没有绿色三角形按钮。

对于我来说几乎是一个不可用的状态。

算了数据库查询相关的,我就先本地查询吧,好在这部分的计算量不大,不影响电脑性能。

运行与调试

偶尔会出现点击运行或者调试按钮,点了以后没有任何反应。

复制粘贴

这个是我最终无法忍受的问题了。别的BUG我能克服,这个BUG让我直接自废武功啊。

这个BUG不是必然出现的,但是出现的频率很高。出现以后就无法复制了。只有把IDEA关了重新开。有些浪费时间。

JRebel点了无法反应

现象

在部分project中JRebel的图标点了没有反应。而大部分project中又可用。

解决办法

假如遇到点击没有反应,则重新安装一下这个JRebel的插件。你会发现此时这个图标虽然有,但是插件管理中显示这个插件没有安装。重新安装后,问题得到解决。

难道插件的配置信息与project也有关联。我感觉这个应该是BUG。

探索过程

很神奇,有同时开发了两个java项目,一个JRebel正常,一个点了没有任务反应。

我做了以下操作后,不正常的项目JRebel也正常了。

  1. 对比我发现无法使用JRebel的项目使用的是JDK11,我就把它统一换成了JDK8

    并且做了以下操作:

    File | Settings | Build, Execution, Deployment | Compiler | * build process VM options text field

-Djdk.lang.Process.launchMechanism=vfork
  1. 重启项目后神奇的事情又发生了,我发现重启后,JRebel的图标竟然没有了。我在插件管理中发现这个插件变成没有安装的状态,我重新安装这个插件后。重启IDEA,JRebel变成可用状态。

我做了以上操作,成功解决了。我个人认为,应该是第2步解决了吧!

参考

官方文档:

https://www.jetbrains.com/zh-cn/remote-development/