在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,例如使用devtool来实现热部署,但是在功能上它也有所限制,如果新增方法或者修改方法参数后,热部署是不生效的。因此对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本。
Jrbel插件下载
首先在Idea中找到setting->plugins,在MarketPlace中搜索该插件。
点击“应用”后,按要求重启一下Idea,使下载的Jrebel插件生效。
这个时候在Idea主界面侧边栏上就有Jrebel的安装指南出现了。
然后我们根据Jrebel的安装指南进行安装即可。
激活Jrebel
安装第一步就需要对Jrebel进行激活,这里笔者推荐第一种激活方式。
然后我们需要配置license server地址,这里我们通过一个JrebelBrainsLicenseServerforJava的激活jar包来实现,通过将jar包放在服务器上运行,然后就可以通过我们自己的服务器来作为license server地址了。jar报地址来源于链接: https://pan.baidu.com/s/1rrn-6F26JpD5RSsbJV3-hQ 密码: dscu。
通过java的命令运行jar包。
java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
运行结果
D:\>java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
2023-11-16 14:08:27.347:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT
2023-11-16 14:08:28.421:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:1008
License Server started at http://localhost:1008
JetBrains Activation address was: http://localhost:1008/
JRebel Activation address was: http://localhost:1008/{tokenname}, with any email.
这里jar包就运行成功了,可以看到,JRebel地址还需要一个{tokenname},这里可以通过GUIDS在线获取工具进行获取。得到一个随机的tokenname值,如果过时了,重新刷新生成即可。
然后填入最终的license server地址:
http://192.127.1.1:1008/ 46bc28f8-e9c2-4c9d-aac5-77d6c2269fb4
注意:的是这里要添加上jar包的开放端口1008
然后输入一个可用的邮箱地址,即可。点击激活便可成功!
但是到这还没完,虽然现在 Jrebel就能正常使用了,但很多人往往用不到几天就提示激活失败, 无法使用了,甚至jar包结束运行后激活就失败了。原因在于Jrebel激活之后默认是联网使用的 , 在该模式下 , Jrebel会一直联网监测激活信息。所以要调为离线使用的,操作方法就是进入Jrebel设置中点击Work offile 按钮即可。使其变为离线模式即可。
另外我们也可以在这设置手动热部署的间隔平均时间。
这样激活就算彻底完成了。
但是这时候仅仅这点配置,功能还是不能正常使用的。还需要我们在Idea中设置自动编译。
配置自动编译
找到setting->build,Excution->Compiler,并勾选Build project automatically。
然后找到setting->Advanced Setting,勾选Compiler中的
Allow auto-make to start even if developed application is currently running
基本上配置完成就可以了。