JSP项目出现Java Build Path Problem报错还有哪些解决方法?
问题记录
- 开发场景:基于JSP + Tomcat开发Web页面,创建Dynamic Web Project后新建JSP测试文件,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> hello JSP~! </body> </html>
- 运行表现:按
Ctrl+F11启动项目后,Chrome浏览器可正常输出hello JSP~!内容,但项目始终显示错误标记 - 报错类型:JAVA BUILD PROBLEM
- 报错详情:
Archive for required library: '/Volumes/T7/KGitbank/JSP (6월)/apache-tomcat-9.0.63/lib/._tomcat-i18n-ko.jar' in project 'JSP01' cannot be read or is not a valid ZIP file JSP01 - 前置信息:Tomcat部署在外置硬盘中,已尝试常规排查手段未解决,需确认外置硬盘是否为报错诱因,以及对应修复方案
根因说明
外置硬盘不是报错的直接原因。报错的核心是macOS系统在非原生APFS格式的外置存储上自动生成的资源分叉隐藏文件,被Eclipse识别为有效Jar包加入构建路径。
文件名以._开头的文件是macOS存储文件扩展属性时生成的附属文件,本身不是Tomcat提供的标准Jar包,Eclipse尝试按Zip格式解析这类文件时就会抛出“不是有效ZIP文件”的错误。项目能正常运行是因为Tomcat启动时默认不会加载._开头的无效文件,运行时逻辑不受影响,仅IDE侧构建校验报错。
如果Tomcat存放在内置APFS格式磁盘中,系统不会生成这类附属隐藏文件,也就不会触发该报错,这也是容易误以为外置硬盘是问题根源的原因。
修复方案
按操作成本从低到高排序:
- 清理Tomcat目录下的无效隐藏文件
打开终端进入Tomcat的lib目录,执行命令删除所有._开头的隐藏文件:
操作完成后回到Eclipse,右键项目选择cd /Volumes/T7/KGitbank/JSP\ \(6월\)/apache-tomcat-9.0.63/lib/ find . -name "._*" -type f -deleteRefresh,再执行Project -> Clean清理项目构建缓存,错误标记即可消除。 - 配置构建路径排除规则
如果后续使用外置盘时仍会自动生成这类文件,可以直接在Eclipse中配置类路径排除规则,避免IDE扫描这类无效文件:- 右键项目,依次进入
Build Path -> Configure Build Path - 在Libraries标签页找到绑定的Tomcat 9.0.63运行时库,展开后选择Native library location,点击右侧Edit
- 切换到Source标签页,添加排除规则
**/._*,保存配置后重新构建项目即可
- 右键项目,依次进入
- 关闭系统外置盘附属文件生成逻辑
如果外置盘需要长期在macOS下使用,可以执行终端命令关闭非APFS磁盘的._文件自动生成逻辑,从源头避免问题:
执行完成后重启Finder生效。如果磁盘不需要和Windows系统交叉读写,也可以直接将外置盘格式化为APFS格式,系统不会再生成这类附属文件。defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
内容的提问来源于stack exchange,提问作者zsh
相关产品推荐
相关产品推荐

