环境:idea2019.1.3,win10
车祸现场:
错误的原因很明显是由于我的电脑的用户名是中文,而jrebel不支持Unicode编码
解决方法有三种:
方法一:
直接修改电脑用户名,改成非Unicode字符,不过,此方法不太好
方法二:
更换idea的配置目录,详情请参考这个博客:
https://blog.csdn.net/Allen5185/article/details/89379826
方法三:
去jrebel官网未找到解决方法,然后查找一个网站看到一个大神的回答,如图
他推荐使用VM参数或者环境变量的方式去配置
使用VM参数的方法配置,然后把原本在用户目录下的jrebel整个目录(目录在idea下,C:\Users\XXX\.IntelliJIdea2019.1\config\plugins\jr-ide-idea\lib\jrebel6,把XXX换成你的用户名,idea版本替换成你的版本)复制过来放在其他不是Unicode编码的路径下,我这里是放在了D盘
C:\Users\XXX\.IntelliJIdea2019.1\config\plugins\jr-ide-idea\lib\jrebel6
-Drebel.base=D:\Java\idea\jrebel6
不过,改成环境变量的配置,依然报错,好像并没有覆盖掉jrebel的目录,如下:
REBEL_BASE=D:\Java\idea\jrebel6
在最新的jrebel更新后,上面的方法也失效了,原因是本质上并没有覆盖掉jrebel的base目录,报错信息为:
JRebel-JVMTI [FATAL] A fatal error occurred while processing the base Java classes. The JVM has been shut down (1).
从根本上解决问题的方法:
不过,在idea的springboot配置界面发现了可以替换的方法,覆盖掉默认的配置路径,改为自己设置的路径,经测试可以从根本上搞定问题(依然需要把jrebel6目录copy过去)。这里说下idea和jrebel的版本都是2019.1.3
具体配置:
个人认为这是目前最好的解决方式,简单而且从根本上解决了问题,看了很多博客都不太好,由于版本的原因有些方法经验证根本没用。
如果上面的方法都没有解决问题,可以使用其他方式去热部署;
①使用idea自带的方式,右键(快捷键为Ctrl + Shift +F9)Recompile,前提勾选update class and resources
缺点,新添加的方法不能热部署,配置文件更改也不能
②使用springboot官方的devtools,这个可以不仅可以热部署class文件,还可以热部署配置文件
具体方法,请大家百度,网上已经有很多种博客
如果哪位大佬有更好的处理方法,欢迎讨论。