最近遇到一件D疼的事,就是项目部分子页面(iframe)偶发性404,你说地址错吧,它也很良民,绝对没有半点出错的迹象。可是tomcat又不报错,迫于无奈,老夫把它换上了jetty,然后转折点来了
要知道我的环境是windows server 2019
然后我们回顾一下jsp的知识虽然jsp是前端页面的代码,可是严格意义上来说,它可是一个servlet来的,故编译后得出个class。它的原理大概是这样:先编译成classtmp文件,然后再重命名为class文件。然后呢,windows 的系统跟linux不一样,如果有一个进程占用了某文件,则此文件处理当前进程外,不会再赋予其他进程写权限,同事安装了everything(文件搜索),我以为是这个进程在生成新文件的时候占用了文件导致classtmp无法被tomcat重命名为class才404的,然后报Unable to rename class file from [xxx_jsp.classtmp] to [xxx_jsp.class]的错,然后不太像(最好也卸掉它吧);最终确认是服务器自带的杀毒软件,它生成文件的时候杀毒软件会占用这个文件然后扫描有没有病毒,占用期间tomcat再去文件名就会报
IOException:Unable to rename class file from [xxx_jsp.classtmp] to [xxx_jsp.class]
解决:把杀毒软件卸掉或者停止服务立马回复正常,不会间歇性404了