记一次idea使用jrebel断点不生效,java修改无效原因

原因猜测:jrebel使用50800端口。idea使用2966。端口不对导致无效。

(ps:为什么说是猜测,因为我是按照我成功的结果进行推论,我并不明白其中原理)

环境:idea2020.1+tomcat8+jdk8+jrebel2020.2

项目:maven多模块web项目

目录

1.jrebel安装和**(略过)

2.按网上教程已配置的idea jrebel环境。过程如下:

1.)idea自动编译。(已配置)

2.)设置Registry

3.)Jrebel面板模块钩选。

4.)所有断点取消,防止有干扰。

5.)tomcat部署的web模式。不要用war。用exploded。区别自行百度,google

其他不重要的:web访问路修改。(ps:隐藏太深了,当初一直找不到)

正题

其他(话外):jrebel修改生效时间。


1.jrebel安装和**(略过)

2.按网上教程已配置的idea jrebel环境。过程如下:

1.)idea自动编译。(已配置)

打开file->setting->Build,Execution,Deployment->Compiler,打钩Build project automatically.如下图:

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

2.)设置Registry

快捷键: Shift+Ctrl+Alt+/ 点击 Registry 勾选 compiler.automake.allow.when.app.running

有些是Ctrl+Shift+A.但我的却是截图。

还有一个方法进入:Help->Find Actions->Registry.如下:

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

已设置:

记一次idea使用jrebel断点不生效,java修改无效原因

3.)Jrebel面板模块钩选。

记一次idea使用jrebel断点不生效,java修改无效原因

4.)所有断点取消,防止有干扰。

记一次idea使用jrebel断点不生效,java修改无效原因

5.)tomcat部署的web模式。不要用war。用exploded。区别自行百度,google

进入配置顶部的Run-〉Edit Configurations

记一次idea使用jrebel断点不生效,java修改无效原因

或如下:

记一次idea使用jrebel断点不生效,java修改无效原因

配置为exploded

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

只有exploded才会有update classes and resources选择

记一次idea使用jrebel断点不生效,java修改无效原因

其他不重要的:web访问路修改。(ps:隐藏太深了,当初一直找不到)

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

正题

终于进入正题了:

这些都配了,jrebel debug启动,只有jsp修改生效,java文件修改不生效。打的断点也没进入。网上又找了一圈。找到这个的解决了:https://www..com/article/23931070581/

以下搬运:

(复制tomcat原有debug JAVA_OPTS参数,给到jrebel debug 。注意修改端口为50800。参数里的端口也要改为50800;复制出来的参数等号前会多出斜杠,要去掉

如我的制出来是:

JAVA_OPTS=-agentlib:jdwp\=transport\=dt_socket,address\=127.0.0.1:2966,suspend\=y,server\=n -Dfile.encoding\=UTF-8

我需要的是:(记得端口要改为50800)

-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50800,suspend=y,server=n -Dfile.encoding=UTF-8

图如下:

记一次idea使用jrebel断点不生效,java修改无效原因

记一次idea使用jrebel断点不生效,java修改无效原因

这次再用jrebel debug跑,可以进入断点,修改的java也生效了。

 

其他(话外):jrebel修改生效时间。

1.jrebel生效时间设置。

file->setting 或 Help->jrebel->configuration(安装了jrebel的才会有jrebel相关的选项,下同不重述)

记一次idea使用jrebel断点不生效,java修改无效原因

2.jrebel立即热部署。idea bug

ctrl+f9

ctrl+shift+f9.

两者区别:顶部的Build菜单可查看

记一次idea使用jrebel断点不生效,java修改无效原因

一般改java文件后用ctrl+f9。使其马上生效

改jsp,html,js,css这些,改完后可用ctrl+shift+f9使其生交往(ps:我的idea跑springboot时就有不会自动的,只能这样手动)

这两个多试就了解了。