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

NetBeans中Maven Java项目编译运行失败如何排查解决

问题根因

编译失败和Maven settings.xml 配置无关,也不存在插件无法识别的问题——从日志可以看到maven-resources-plugin、maven-compiler-plugin、exec-maven-plugin都正常加载执行了。
注意:不需要浪费时间排查settings.xml配置,该文件没有异常。
真正的报错原因是项目内置的Lombok版本过低,没有适配JDK 18的Java模块系统封装规则。JDK 16及以上版本默认不开放编译器内部API的访问权限,旧版Lombok无法调用com.sun.tools.javac.processing包下的类,直接抛出IllegalAccessError导致编译终止。

修复方案

任选一种方案处理即可:

  • 优先选择升级Lombok依赖:把pom.xml里Lombok的版本升级到1.18.22及以上(推荐用最新稳定版1.18.32),新版本已经原生适配JDK 18的模块规则,不需要额外配置参数,改完刷新Maven依赖重新编译即可正常运行,依赖配置参考:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.32</version>
    <scope>provided</scope>
</dependency>
  • 临时兼容方案:如果暂时不能升级Lombok版本,就在maven-compiler-plugin的配置中添加编译参数,强制开放JDK编译器的内部模块访问权限,配置参考:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <fork>true</fork>
        <compilerArgs>
            <arg>--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
            <arg>--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
            <arg>--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
            <arg>--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
            <arg>--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
        </compilerArgs>
    </configuration>
</plugin>
  • 环境降级方案:直接将本地使用的JDK版本切换为JDK 11或者JDK 8这两个长期支持版本,旧版Lombok对这两个版本的兼容性最好,不需要修改项目任何配置就能直接编译运行。

内容的提问来源于stack exchange,提问作者Paulo Sérgio Rodrigues Alves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:27:40