Oracle Linux 9.4安装Apache Atlas 2.3.0时Maven构建失败:Zip END header not found
解决Apache Atlas 2.3.0在Oracle Linux 9.4上Maven编译时org.restlet依赖损坏问题
问题现象
编译Apache Atlas 2.3.0时,Maven构建失败,核心错误为org.restlet相关JAR包损坏,提示zip END header not found,关键日志如下:
[ERROR] error reading /root/.m2/repository/org/restlet/jee/org.restlet/2.4.3/org.restlet-2.4.3.jar; zip END header not found [ERROR] error reading /root/.m2/repository/org/restlet/jee/org.restlet.ext.servlet/2.4.3/org.restlet.ext.servlet-2.4.3.jar; zip END header not found [ERROR] /root/apache-atlas-sources-2.3.0/test-tools/src/main/java/org/apache/atlas/runner/LocalSolrRunner.java:[15,1] cannot access org.apache.atlas.runner [ERROR] ZipException opening "org.restlet-2.4.3.jar": zip END header not found
已尝试操作:
- 删除本地Maven缓存目录
.m2/repository并重新执行mvn clean install,问题未解决。
环境信息:
- Apache Atlas 2.3.0
- Oracle Linux 9.4
- Apache Maven 3.6.3 / 3.9.9
解决方案
1. 强制重新下载指定依赖
无需删除整个缓存,仅清理restlet相关目录并强制更新:
rm -rf ~/.m2/repository/org/restlet mvn clean install -U
-U参数会强制Maven忽略本地缓存,重新拉取依赖,避免使用损坏的文件。
2. 排查网络与镜像源
网络不稳定或镜像源异常可能导致下载中断:
- 修改
~/.m2/settings.xml配置国内镜像(以阿里云为例):
<settings> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors> </settings>
- 测试仓库连接可用性:
curl -I https://repo1.maven.org/maven2/org/restlet/jee/org.restlet/2.4.3/org.restlet-2.4.3.jar
返回HTTP/1.1 200 OK说明连接正常。
3. 手动下载并放置依赖
若自动下载始终失败,手动获取完整依赖:
- 找到org.restlet:org.restlet:2.4.3和org.restlet.ext.servlet:2.4.3的官方JAR包及对应
.pom文件; - 将文件放入本地Maven仓库对应路径:
~/.m2/repository/org/restlet/jee/org.restlet/2.4.3/~/.m2/repository/org/restlet/jee/org.restlet.ext.servlet/2.4.3/
4. 检查文件系统权限
确保Maven拥有.m2目录的读写权限,避免因权限不足导致文件写入不完整:
chown -R $USER:$USER ~/.m2
若以root用户执行,需确认目录权限无异常。
5. 验证JAR包完整性
下载完成后,验证JAR包是否完整:
unzip -t ~/.m2/repository/org/restlet/jee/org.restlet/2.4.3/org.restlet-2.4.3.jar
输出No errors detected in compressed data则说明文件完整,否则需重新下载。
内容的提问来源于stack exchange,提问作者Yogesh Nagare
相关产品推荐
相关产品推荐

