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

Spring Boot项目Maven编译报错无法找到Java基础类问题

Spring Boot项目执行Maven命令报错:编译器无法找到JDK内置基础类

问题表现

Windows 10环境下,系统PATH已正确配置Java,执行任意Maven命令时突发编译失败,编译器无法识别List、Map、String等JDK内置基础类,同时伴随栈溢出错误。

环境校验输出

$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

$ which java
/c/Program Files/OpenJDK/openjdk-8u312-b07/bin/java

执行mvn clean package报错片段

[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ APP_NAME ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 55 source files to C:\Users\francisco.souza\Projetos\Java\2022\APP_NAME\target\classes

The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
        at com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:299)

...
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/francisco.souza/Projetos/Java/2022/APP_NAME/src/main/java/br/com/dark/icc/ura/app/steps/StepDesliga.java:[33,13] cannot access Map
  class file for Map not found
[ERROR] /C:/Users/francisco.souza/Projetos/Java/2022/APP_NAME/src/main/java/br/com/dark/icc/ura/app/steps/StepDesliga.java:[45,64] incompatible types: Map cannot be converted to java.util.Map<java.lang.String,java.lang.Object>
[ERROR] /C:/Users/francisco.souza/Projetos/Java/2022/APP_NAME/src/main/java/br/com/dark/icc/ura/app/steps/StepDesliga.java:[58,48] cannot access List
  class file for List not found

根因说明

PATH中能正常执行java命令不代表Maven编译时使用的是完整可用的JDK:Maven编译阶段优先读取JAVA_HOME环境变量定位JDK路径,不直接复用PATH中的java命令路径。报错中的StackOverflowError是类加载失败触发的连锁异常,不是核心问题,核心原因是Maven调用的Java运行环境不完整,无法加载rt.jar中存储的JDK核心类。

修复步骤

按优先级依次排查:

  • 修正JAVA_HOME配置
    打开Windows系统环境变量面板,确认JAVA_HOME变量值为JDK安装根目录,即对应路径为C:\Program Files\OpenJDK\openjdk-8u312-b07,不要指向bin子目录、不要指向JRE目录,路径结尾不要加多余斜杠,不要包裹多余引号。
    配置完成后新开命令行窗口,依次执行两个命令校验:
    1. echo %JAVA_HOME%,确认输出路径和上述JDK根目录一致
    2. %JAVA_HOME%\bin\javac -version,确认能正常输出javac 1.8.0_312的版本信息,证明JDK完整可用
  • 校验Maven绑定的JDK版本
    命令行执行mvn -v,查看输出内容中的Java version和Java home字段,确认版本为1.8.0_312、路径为上述配置的JDK路径。如果显示其他JDK/JRE版本,检查PATH环境变量,删除其他Java相关路径,避免版本冲突。
  • 调高编译阶段内存配置
    若修正JDK路径后仍报栈溢出错误,在项目pom.xml中调整maven-compiler-plugin的内存参数,配置示例:
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <meminitial>512m</meminitial>
        <maxmem>1024m</maxmem>
      </configuration>
    </plugin>
    
  • 清理缓存重试
    关闭所有打开的IDE、终端窗口,删除项目下的target目录,执行mvn clean compile重新触发编译即可。如果是在IDE内置终端执行命令,需要同步确认IDE的项目SDK、Maven运行时JRE配置均指向同一份1.8版本JDK,不要使用IDE内置的JRE环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:54:03