一.开发环境:
idea maven
二.场景
在代码中加了一行system.out.println 结果发现神奇的是代码居然没有打印在console.如图
console中没有输出打印内容
神奇的一幕 让我当场蒙圈.
进一步debug使用f7 发现无法进入方法,
然后手动evaluate 代码 发现此时就可以正常打印在了console.如图:
三. 严格的来讲我是当场怀疑了自己的,因为没有遇到过system语句无法在console打印的场景(也是由于正常项目中几乎不用system),所以我第一反应是system问题或者idea layout是否变化了.排查后发现都没有,最后我想到了实际运行的都是target里面代码,是否是source代码和target代码不一致引起的呢?
target里面代码果然没有新增的system的代码,如图
那么结论所以就是idea修改了代码,没有自动编译,手动mvn clean compile 重新生成target 问题解决
四:最后设置idea自动更新target.
正常idea运行代码会自动重新编译,不会有这个问题,我这里原因有些特殊,因此单独写一篇解决过程.
链接:
总结:
1.注意图一彩蛋 我新增了一行前还加了一个空白行,导致编译器认为我断点在原来return那行,如果不加这个空白行,断点会显示为无效.
2.在我debug 源码发现f7无法进入的时候,我就应该思考target和source代码不一致.
3.自己玩的项目,所以配置不完善,导致idea没有自动更新target.