org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @5b7a5baa ### The error may exist in org/springblade/modules/system/mapper/TenantMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT id, tenant_id, tenant_name, domain, linkman, contact_number, address, create_user, create_time, update_user, update_time, status, is_deleted FROM blade_tenant WHERE is_deleted = 0 AND (domain = ?) ### Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @5b7a5baa
时间: 2024-03-15 18:46:39 浏览: 311
spring mybatis 3.x 使用图文
这个错误通常是因为Java 9及以上版本的模块化机制导致的访问控制问题。在Java 9及以上版本中,Java引入了模块化机制,限制了模块之间的访问权限。根据错误信息,这个问题可能是因为在Java 9及以上版本中,MyBatis访问了Java核心库中的反射包,但是Java核心库中的反射包是不可访问的,因此导致了访问控制问题。
解决这个问题,您可以尝试在程序入口处添加以下参数:
```java
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
```
这个参数可以打开Java核心库中的反射包,允许MyBatis访问。如果您使用的是Maven,则可以在pom.xml文件中添加以下配置:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<argLine>--add-opens=java.base/java.lang.reflect=ALL-UNNAMED</argLine>
</configuration>
</plugin>
</plugins>
</build>
```
这个配置可以在执行Maven测试时打开Java核心库中的反射包。如果这些方法都无法解决问题,您可以提供更多的错误信息和堆栈信息,我可以帮您更好地分析问题。
阅读全文