You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven构建报错:com.google.common.collect.ImmutableMap类未找到

解决java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap问题

以下是针对你遇到的问题的具体解决步骤:

1. 检查并更新Guava依赖版本

Java 22需要适配支持高版本Java的Guava包,Guava 32.0.0-jre及以上版本才开始支持Java 21+。打开项目的pom.xml,找到Guava的依赖项,若版本过低则修改:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>33.2.1-jre</version> <!-- 可替换为最新兼容版本 -->
</dependency>

修改后执行mvn clean install重新构建项目。

2. 确保运行时类路径包含Guava jar

直接用java命令运行时,必须手动指定类路径才能让JVM找到Guava的类:

  • 找到本地Maven仓库中Guava jar的路径(一般在C:\Users\<你的用户名>\.m2\repository\com\google\guava\guava\<对应版本>目录下)
  • 运行时通过-cp参数引入,示例命令:
java -cp "target/你的项目输出jar包名.jar;C:\Users\<你的用户名>\.m2\repository\com\google\guava\guava\33.2.1-jre\guava-33.2.1-jre.jar" 你的主类全路径

如果依赖较多,推荐用Maven的exec:java插件自动处理类路径:

mvn exec:java -Dexec.mainClass="你的主类全路径"

3. 清理Maven缓存并重新下载依赖

可能本地仓库的Guava jar已损坏,执行命令强制更新:

mvn clean install -U

-U参数会强制Maven重新下载所有依赖包,避免缓存问题。

4. 配置Maven编译与Java版本一致

在pom.xml中添加Java版本配置,确保编译和运行环境统一为Java 22:

<properties>
    <maven.compiler.source>22</maven.compiler.source>
    <maven.compiler.target>22</maven.compiler.target>
</properties>

5. 检查Guava依赖范围

如果Guava依赖的<scope>被设置为provided或test,运行时不会自动引入该包,需确保范围为compile(默认即为compile,若手动修改过则改回):

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>33.2.1-jre</version>
    <scope>compile</scope>
</dependency>

内容的提问来源于stack exchange,提问作者Macroflux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:29:52