Eclipse 无法打开 java 文件 -> 无法使受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass

Thi*_*mal 19 java eclipse java-17 eclipse-2021-09 openjdk-17

Lombok添加lib后出现如下错误

An error has occurred. See error log for more details.
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 @1d1c37d5
Run Code Online (Sandbox Code Playgroud)

小智 29

更新到 Lombok 1.18.22 插件导致这个问题消失了。我确实尝试添加 --add-opens 标志,但 eclipse 启动器对此犹豫不决。恕我直言,这只是 Java 17 和 Lombok Eclipse IDE 插件之间不兼容的结果。


Thi*_*mal 21

eclipse.ini将以下行添加到文件末尾

--illegal-access=warn
--add-opens=java.base/java.lang=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)

  • 由于您的问题专门提到了 Java 17,因此没有必要指定“--illegal-access=warn”,它不受支持并将被忽略。 (5认同)
  • “我只是复制了这些行”——这是对为什么我们充斥着可怕的软件的一个很好的总结。即使是现在,在我明确告诉您这些是**两个**独立选项并且只有其中之一在 JDK 17 中有效之后,您甚至拒绝尝试理解。是的,如果没有绿色并且没有拔掉电缆,计算机就无法工作,但是插入电缆并涂上绿色油漆后,计算机就可以工作。现在,你只需要明白,这并不意味着绿色绘画是必要的。或者只需在 cmd 中执行 `jdk-17\bin\java --illegal-access=warn x` 并记下警告消息。 (5认同)
  • @Thirumal 你交叉检查了吗?当您连接电源插头并将其涂成绿色后,如果您的计算机可以工作,是否证明将其涂成绿色可以解决问题?添加“--add-opens java.base/java.lang=ALL-UNNAMED”选项*而不*添加无效的“--illegal-access=warn”怎么样? (3认同)

小智 7

唯一对我有用的是直接从 lombok 网站下载 lombok,而不是使用 maven 文件夹中可用的那个。