今天帮同事的eclipse安装lombok,经过一系列的配置后启动,弹出如下提示
根据提示打开日志文件后,如下图
因笔者技术水平不高,因此原因属于猜测:同事的eclipse.ini文件中有这么一句
-Dosgi.requiredJavaVersion=11
日志文件中有这么一句:
java.version=16.0.1
加上报错信息:
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 @2a19a0fe
而同事的jdk使用的是1.8,jdk8及以下制作的库运行在jdk9以上会自动被标识为未命名模块,因此笔者猜测是eclipse的版本太高没有识别到lombok的两条配置,解决方法也很简单,在eclipse.ini中加入如下配置:
--illegal-access=permit
允许通过反射访问。
本文只提出了解决方法并没有描述原因,希望有大佬看到能够不吝解释一下