You need to enable JavaScript to run this app. Java16环境下Eclipse jee-2021-03安装Lombok 1.18.20报错解决
优惠活动
大模型
产品
解决方案
定价
更多

Java16环境下Eclipse jee-2021-03安装Lombok 1.18.20报错解决

Eclipse 2021-03(Java 16环境)安装Lombok 1.18.20失败解决方案

异常表现

  • 手动将Lombok 1.18.20 jar包放置到Eclipse安装目录后,打开类文件时报错,项目构建抛出Java Builder运行异常
  • Help -> About Eclipse IDE页面无Lombok已安装标识

错误日志

eclipse.buildId=4.19.0.I20210303-1800
java.version=16.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=tr_TR
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product


org.eclipse.jdt.core
Error
Wed Jun 09 03:17:25 TRT 2021
Errors running builder 'Java Builder' on project 'northwind'.

java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @75ad30c1
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.overrideLoadResult(ModuleClassLoader.java:86)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    at org.eclipse.jdt.internal.compiler.parser.Parser.endParse(Parser.java:11687)
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12880)
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13104)
    at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:13061)
    at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11448)
    at org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:850)
    at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:394)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:377)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:214)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:309)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:79)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:272)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:192)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:846)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:229)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:277)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:330)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:333)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:385)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:406)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

根因说明

Java 9引入模块系统后,默认限制了第三方程序通过反射访问JDK内部API的权限,Java 16更是将非法反射访问的默认策略从警告调整为直接拒绝。Lombok运行时需要通过反射调用java.lang.ClassLoader的defineClass方法完成代码增强,被Java 16的模块访问控制拦截,因此抛出访问异常,导致Lombok未正常加载。

解决方案

找到Eclipse安装目录下的eclipse.ini配置文件,在-vmargs参数行的下方添加如下配置:

--illegal-access=permit

保存文件后重启Eclipse即可,重启后可在Help -> About Eclipse IDE页面确认Lombok标识正常显示,项目构建和类文件打开也不会再抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 10:15:08