记录莫名的出现bug,之前还挺好的- -
2020年4月18日22点00分已解决完毕,本次一共常出现了三个莫名其妙的Bug,之前还是挺好的,不知道手欠动了哪个地方,下面详述问题及解决方法。
Bug1:log4j2.xml
文件中定义的日志输入为相对路径,但是单元测试运行时,项目目录下却始终没有日志。
问题描述
log4j2.xml
文件中定义了如下的文件日志,只截取了关键部分片段。
<Properties>
<Property name="DailylogDir">log/${year}/${month}/${day}</Property>
<Property name="sawDebug">${DailylogDir}/learnDebug</Property>
</Properties>
<Appenders>
<RollingRandomAccessFile name="sawRollingFileDebug" fileName="${sawDebug}.log"
filePattern="${DailylogDir}/${sawDebug}-%d{yyyy-MM-dd}-%i.log">
</RollingRandomAccessFile>
</Appenders>
Java代码也相当简单(只是为了测试日志生成情况而已)。
public class TestLog {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Test
void test() {
logger.debug("11");
logger.info("22");
logger.warn("33");
logger.error("44");
}
}
如上所示,明显日志文件路径为相对路径,但是JunitTest正常运行,却始终没有生成日志文件,我尝试刷新IDEA项目目录或者打开所在的文件管理器都没有!!!
解决手段
之前是这样的,如下所示👇👇👇!!!
由于我打开了多个项目,也就是多个IDEA页签的,然后这个$MODULE_WORKING_DIR$
居然直接给我缓存定位到其他的项目中去了!!!太坑了。
摸索了一段时间发现原来是IDEA自动配置的运行Configuration的工作路径不对!但是之前一直都是没有问题的(等解决后,我感觉极有可能是IDEA缓存惹的祸)
我这里已经成功改好了这个Working directory
的配置,改为$ModuleFileDir$
如上所示👆👆👆
如果你打算手动配置成为其它路径也可以自选的,注意是任意选择的,根据自身的情况自选,乱选没啥用的。
我也不知道为啥突然出现缓存乱跳的情况…可能这是命吧🙂🙂🙂
二改(2020年5月2日18点24分)记录:
在写上面这个bug的时候我用的是2020.1版本,今天看到IDEA的2020.1.1的更新如下👇👇👇
刚好修复了我遇到的这个BUG,莫名开心😊😊😊,虽然我没有向官方提这个BUG。
Bug2:不是bug1的项目,是另一个Spring源码项目,莫名其妙出现IDEA 错误: 找不到或无法加载主类
问题描述
??????
运行main方法时出错的。
我特么的之前一直挺好的(极有可能是缓存问题,我可能手欠把IDEA缓存给Invalidate了把)
解决手段
只能再清理一次缓存, 然后重启
先这样
然后这样
然后重启😤😤😤!!!(可以不用重启的,我想彻底断掉)
…
然后解决了。
Bug3:IDEA springcloud Maven项目做单元测试的时候,单元测试直接不能启动
问题描述
单元测试时,失败了一次,提示ClassNotFoundException TestInstancePreDestroyCallback
,这个是由于使用的是junit5.5.2
,说有个junit
中的一个class
没有找到,后来我查了一下,发现是junit
版本问题,于是我换成了5.6.2
,再次运行,直接无法运行了,具体就是junit无法启动!
如下所示👇👇👇(这个是成功的,失败图忘截了),失败的样子是把图片中的✅✅✅图标换成➖➖➖
,console上是这样一行Process finished with exit code -1
,-1
啊,那就是系统错误啊,我也不知道啥原因啊,也没有看到提示写哪个地方错误。
解决手段
我又怀疑是之前的缓存的问题(那个时候还没有重启),摸索了一会,然后看了下项目的依赖,
如下所示👇👇👇(这个是成功的,失败图忘截了),失败的样子是下面有两个junit
一个是5.5.2
一个是5.6.2
,于是我删除了5.5.2
相关的依赖,然后把直接mavenreimport
重导依赖,完美解决!!!
这里我就不得不说,经历过导入spring
源码至IDEA后(也遇到了一堆的编译错误问题,不过还好都解决了,也可以正常新建module,做自己想做的事情了),再加上这个maven依赖的问题依赖了两个相同的jar却没有自动删除之类的操作,有点觉得gradle好用了,匹配简单就一行,而且解决依赖也方便(不过我也只是个gradle萌新)。
总结
今天导致这些问题的根本原因是这样的,今天想试一下这款插件的👇👇👇(可以说IDEA上的好多插件我都尝试过,最终也只留下了中意的几款,其他的要不是暂时用不到,要不就是不适合我,要不就是比较消耗性能或者内存,亦或是页面不符合我的审美观,要不是由于付费,我是白po嫖jie党😄😄😄)
这是款什么插件呢?是一款安装后直接替换掉IDEA所有默认的图标,在安装后的一瞬间触发,同时触发重新缓存索引(spring源码特别大比较耗时),在我的黑色默认主题风格Darcula
显得特别的亮眼,就是眼前一亮,但是缺点也很明显,我习惯了接口和类的图片的明显区分,但是这个插件针对class和interface的图片让我觉得难以区分,如果命名不好的话,还是不好区分或者需要时间来适应,于是我卸载了这款插件,就导致了上述的几个bug!!!
好在有一定的经验,知道怎么解决这些莫名其妙的问题,比如log没有找到,可能是路径的问题;jar替换可能导致缓存的问题;IDEA 找不到或无法加载主类,一把都是IDEA缓存的问题,invalidate并restart即可。
以后在遇到其他的问题,再继续添加📄📄📄