SpringBoot使用jrebel启动报错:JRebel-JVMTI [FATAL] Couldn't write to C:\Users

环境:idea2019.1.3,win10

车祸现场:

错误的原因很明显是由于我的电脑的用户名是中文,而jrebel不支持Unicode编码

解决方法有三种:

方法一:

直接修改电脑用户名,改成非Unicode字符,不过,此方法不太好

方法二:

更换idea的配置目录,详情请参考这个博客:

https://blog.csdn.net/Allen5185/article/details/89379826

方法三:

去jrebel官网未找到解决方法,然后查找一个网站看到一个大神的回答,如图

SpringBoot使用jrebel启动报错:JRebel-JVMTI [FATAL] Couldn't write to C:\Users_第1张图片

他推荐使用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

SpringBoot使用jrebel启动报错:JRebel-JVMTI [FATAL] Couldn't write to C:\Users_第2张图片

 

-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

具体配置:

SpringBoot使用jrebel启动报错:JRebel-JVMTI [FATAL] Couldn't write to C:\Users_第3张图片

 

个人认为这是目前最好的解决方式,简单而且从根本上解决了问题,看了很多博客都不太好,由于版本的原因有些方法经验证根本没用。

如果上面的方法都没有解决问题,可以使用其他方式去热部署;

①使用idea自带的方式,右键(快捷键为Ctrl + Shift +F9)Recompile,前提勾选update class and resources

缺点,新添加的方法不能热部署,配置文件更改也不能

②使用springboot官方的devtools,这个可以不仅可以热部署class文件,还可以热部署配置文件

具体方法,请大家百度,网上已经有很多种博客

 

如果哪位大佬有更好的处理方法,欢迎讨论。

你可能感兴趣的:(springboot,jrebel,IDEA,SpringBoot,Jrebel,rebel.base,JRebel-JVMTI,[FATAL],Couldn't)