Tomcat 9无法运行JSP文件:无法设置文件最后修改日期问题求助
这个问题的根因是JSP编译器Jasper在将JSP文件编译为Java源码后,无法更新生成的.java文件的最后修改时间戳,导致编译流程中断,没有生成对应的字节码class文件,后续刷新页面时就会抛出类不存在的错误。可按以下步骤依次排查解决:
修复工作区缓存目录权限
关闭Eclipse和所有运行中的Tomcat进程,执行以下命令递归修改工作区元数据目录的所有者为当前登录用户:sudo chown -R $USER:$USER /data/Documents/S3/JEE/.metadata该场景大多是因为之前使用sudo权限启动过Eclipse/Tomcat,导致缓存目录的所有者为root,普通用户运行的Tomcat进程即使有文件写入权限,也没有修改文件元数据(修改时间戳)的权限。
清理服务器缓存并重新发布
启动Eclipse后打开「Servers」视图:- 右键选中对应的Tomcat服务器,点击Clean清理已发布的项目资源
- 再次右键点击Tomcat服务器,选择Clean Tomcat Work Directory清理JSP编译缓存目录
- 移除当前发布的TP4项目,重新添加后启动服务器测试
检查项目配置兼容性
如果上述操作无效,检查项目的Facet配置:
右键项目 → Properties → Project Facets,确认两项配置:- Dynamic Web Module版本不高于4.0(Tomcat 9最高支持Servlet 4.0规范,更高版本会导致JSP编译失败)
- Java版本和你使用的Java 11保持一致
重建Tomcat运行配置
如果问题仍存在,完全重置Eclipse中的Tomcat配置:- 在Servers视图删除现有的Tomcat服务器
- 关闭Eclipse,删除路径
/data/Documents/S3/JEE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0整个临时目录 - 重启Eclipse后重新添加Tomcat 9服务器,发布项目后测试
内容的提问来源于stack exchange,提问作者Arkait
相关产品推荐
相关产品推荐

