springBoot报错IllegalAccessError: class org.springframework.ldap.core.support.AbstractContextSource (in unnamed module @0x5db45159) cannot access class com.sun.jndi.ldap.LdapCtxFactory (in module java.naming) because module java.naming does not export com.sun.jndi.ldap to unnamed module @0x5db45159
时间: 2023-12-07 07:04:58 浏览: 242
java 异常种类总结【转】.docx
这个错误是因为 Java 9 及以上版本中,模块化引入了新的安全特性,即模块之间的访问控制,而在这个错误中,Spring Boot 的模块试图访问 Java Naming 模块中的类,但是 Java Naming 模块并没有将 com.sun.jndi.ldap 包导出给 Spring Boot 模块,导致访问失败。
你可以尝试在启动应用程序时添加以下参数以解决此问题:
```
--add-exports java.naming/com.sun.jndi.ldap=ALL-UNNAMED
```
这个参数指示 JVM 导出 java.naming 模块中的 com.sun.jndi.ldap 包给所有未命名模块,包括 Spring Boot 模块。
如果你使用的是 Maven 或 Gradle 等构建工具,你也可以在构建时添加以下依赖项来解决此问题:
Maven:
```xml
<dependency>
<groupId>javax.naming</groupId>
<artifactId>com.sun.jndi.ldap</artifactId>
<version>1.2.1</version>
</dependency>
```
Gradle:
```groovy
implementation 'javax.naming:com.sun.jndi.ldap:1.2.1'
```
阅读全文