这个错误是由于在 Java 17 中,模块化系统的一些变化导致的。\n\n在 Java 9 之前,java.base 模块将 java.lang 包打开给所有的模块,因此可以在其他模块中访问 java.lang 包中的类。但是从 Java 9 开始,引入了强制访问控制,即通过 opens 语句将包打开给指定的模块。\n\n在 Java 17 中,java.base 模块不再将 java.lang 包打开给未命名模块(unnamed module),因此在未命名模块中访问 java.lang 包中的类会导致该错误。\n\n要解决这个问题,你可以将代码重新组织为模块化项目,并确保在模块描述文件(module-info.java)中将所需的模块导入,并且在需要访问 java.lang 包中的类的模块中使用 opens 语句将 java.lang 包打开给相应的模块。\n\n如果你不想使用模块化,你可以将代码编译为旧版本的 Java(例如 Java 8),或者在 Java 命令中使用 --add-opens 选项来打开 java.base 模块的 java.lang 包,例如:\n\n\njava --add-opens java.base/java.lang=ALL-UNNAMED YourMainClass\n

Java 17 错误:java.base 模块未公开 java.lang 给无名模块 | 解决方案

原文地址: https://www.cveoy.top/t/topic/qjTu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录