Apple Silicon Mac Eclipse开发Rest Client遇Maven依赖解析错误求助
问题场景
在Apple Silicon芯片的MacBook Pro上,使用Eclipse 2022-03/4.23.0开发Rest Client Maven项目时,更新项目出现以下错误:
Could not calculate build plan: Plugin org.apache.maven.plugins:maven-jar-plugin:2.4 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-jar-plugin:jar:2.4
Plugin org.apache.maven.plugins:maven-jar-plugin:2.4 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-jar-plugin:jar:2.4
项目pom.xml配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>RestClient</groupId> <artifactId>RestClient</artifactId> <version>0.0.1-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.29.1</version> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <version>2.29.1</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.25.1</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency> </dependencies> </project>
本地使用zulu18.28.13-ca-jdk18.0.0-macosx_aarch64,编译目标为Java 1.8,项目在Windows上可正常运行,Mac上报错,已排除防火墙问题。
核心原因
- 旧版Maven插件不兼容ARM架构:
maven-jar-plugin:2.4是2012年的旧版本,对Apple Silicon的ARM64架构支持不足,且与高版本JDK(如JDK18)存在兼容性冲突,导致无法正确解析依赖。 - JDK版本与编译目标不匹配:用JDK18(ARM64)编译Java 1.8代码,跨版本编译的配置可能触发插件依赖解析时的架构适配问题。
- Maven本地仓库缓存损坏:Mac上的Maven本地仓库可能存在损坏的插件缓存文件,导致依赖解析失败。
解决方法
1. 升级Maven插件版本
在pom.xml的<build><plugins>节点中,显式添加并升级maven-jar-plugin到兼容ARM架构的新版本(推荐3.3.0),同时升级maven-compiler-plugin以适配JDK18:
<build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>1.8</source> <target>1.8</target> <!-- 添加release参数确保跨版本编译的兼容性 --> <release>8</release> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> </plugin> </plugins> </build>
2. 清理Maven本地仓库缓存
- 打开Finder,前往路径
~/.m2/repository - 删除
org/apache/maven/plugins/maven-jar-plugin整个目录 - 在Eclipse中右键项目 → Maven → Update Project,勾选"Force Update of Snapshots/Releases",点击确定重新下载依赖
3. (可选)切换到ARM版JDK8
如果希望保持编译环境与目标版本一致,可以安装Zulu的ARM版JDK8(zulu8.68.0.21-ca-jdk8.0.362-macosx_aarch64),然后在Eclipse中配置:
- 打开Eclipse → Preferences → Java → Installed JREs → 添加新下载的JDK8
- 右键项目 → Properties → Java Build Path → 切换到该JRE
- 右键项目 → Properties → Java Compiler → 确认编译级别为1.8
内容的提问来源于stack exchange,提问作者user1941319

