jsp页面返回404现象,tomcat8日志提示org.apache.jasper.compiler.Compiler.removeGeneratedClassFiles Failed to delete generated Java file …
今天突然发现生产上某个目录下的jsp全都无法打开,返回404。经检查,同目录下的js文件没有问题,可以正常访问,排除目录权限问题。
然后开始怀疑是jsp编译失败,于是到tomcat的/work/Catalina/localhost下查看jsp的编译情况,发现class和java都正常存在。
因为是生产环境,不敢贸然删除文件,只能继续检查日志,发现tomcat的日志打印出org.apache.jasper.compiler.Compiler.removeGeneratedClassFiles Failed to delete generated Java file ......
看来确实是tomcat编译jsp的时候出了问题,决定找tomcat的文档看看原因。
经过收集到的信息,发生这样的问题很可能是因为用户权限的问题,tomcat在编译jsp时,要删除旧的class和java文件,但是如果旧的文件是由另一个用户生成的,就没有权限删除,自然也无法生成新的class和java文件。所以也无法访问。
解决方法:用变更账号删除/work/Catalina/localhost下jsp里的缓存文件即可。