记一次idea使用jrebel断点不生效,java修改无效原因
原因猜测:jrebel使用50800端口。idea使用2966。端口不对导致无效。
(ps:为什么说是猜测,因为我是按照我成功的结果进行推论,我并不明白其中原理)
环境:idea2020.1+tomcat8+jdk8+jrebel2020.2
项目:maven多模块web项目
目录
2.按网上教程已配置的idea jrebel环境。过程如下:
5.)tomcat部署的web模式。不要用war。用exploded。区别自行百度,google
其他不重要的:web访问路修改。(ps:隐藏太深了,当初一直找不到)
1.jrebel安装和**(略过)
2.按网上教程已配置的idea jrebel环境。过程如下:
1.)idea自动编译。(已配置)
打开file->setting->Build,Execution,Deployment->Compiler,打钩Build project automatically.如下图:
2.)设置Registry
快捷键: Shift+Ctrl+Alt+/ 点击 Registry 勾选 compiler.automake.allow.when.app.running
有些是Ctrl+Shift+A.但我的却是截图。
还有一个方法进入:Help->Find Actions->Registry.如下:
已设置:
3.)Jrebel面板模块钩选。
4.)所有断点取消,防止有干扰。
5.)tomcat部署的web模式。不要用war。用exploded。区别自行百度,google
进入配置顶部的Run-〉Edit Configurations
或如下:
配置为exploded
只有exploded才会有update classes and resources选择。
其他不重要的:web访问路修改。(ps:隐藏太深了,当初一直找不到)
正题
终于进入正题了:
这些都配了,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
图如下:
这次再用jrebel debug跑,可以进入断点,修改的java也生效了。
其他(话外):jrebel修改生效时间。
1.jrebel生效时间设置。
file->setting 或 Help->jrebel->configuration(安装了jrebel的才会有jrebel相关的选项,下同不重述)
2.jrebel立即热部署。idea bug
ctrl+f9
ctrl+shift+f9.
两者区别:顶部的Build菜单可查看
一般改java文件后用ctrl+f9。使其马上生效
改jsp,html,js,css这些,改完后可用ctrl+shift+f9使其生交往(ps:我的idea跑springboot时就有不会自动的,只能这样手动)
这两个多试就了解了。