当前使用版本(必填,否则不予处理)
Springboot 版本:3.0.6 Graalvm 版本:graalvm-ce-java17-22.3.1 Mybatis 版本:3.5.13 MyBatisPlus 版本:3.5.3.1 MyBatisPlusJoin 版本:1.4.2.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
当把项目使用GraalVM编译后运行的时候报错。
重现步骤(如果有就写完整)
报错信息
java.lang.ExceptionInInitializerError: null
at org.mybatis.spring.mapper.MapperScannerConfigurer.postProcessBeanDefinitionRegistry(MapperScannerConfigurer.java:363) ~[web.exe:na]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:344) ~[na:na]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:145) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[web.exe:6.0.8]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[web.exe:6.0.8]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[web.exe:3.0.6]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[web.exe:3.0.6]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[web.exe:3.0.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[web.exe:3.0.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[web.exe:3.0.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[web.exe:3.0.6]
at com.adil.bms.web.BmsApplication.main(BmsApplication.java:19) ~[web.exe:na]
Caused by: org.apache.ibatis.logging.LogException: Error creating logger for logger org.mybatis.spring.mapper.ClassPathMapperScanner. Cause: java.lang.NullPointerException
at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:54) ~[na:na]
at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:47) ~[na:na]
at org.mybatis.logging.LoggerFactory.getLogger(LoggerFactory.java:32) ~[na:na]
at org.mybatis.spring.mapper.ClassPathMapperScanner.<clinit>(ClassPathMapperScanner.java:61) ~[na:na]
... 12 common frames omitted
Caused by: java.lang.NullPointerException: null
at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:52) ~[na:na]
... 15 common frames omitted
Comment From: qmdx
暂不支持
Comment From: Bahramudin
@qmdx 谢谢回复!这个有支持的希望吗?如果可以的话,我们大概可以等多久?我们非常期待MyBatis及MyBatisPlus带有这个功能。谢谢!
Comment From: wssy001
可以先用mybatis-springboot-starter,AOT相关配置可以参考这个项目 ,Native Image 打包时个人建议开启 Tracing Agent ,避免不必要的报错
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
@qmdx mybatis正式开始支持 Spring 3.x AOT 编译了,Mybatis Plus是不打算支持AOT 编译还是?
Comment From: Bahramudin
@wssy001 我就是用这个版本的,而且做了和那个参考项目一模一样的配置,还是一样的问题。很郁闷。。。
Comment From: huayanYu
可以先用
mybatis-springboot-starter,AOT相关配置可以参考这个项目 ,Native Image打包时个人建议开启 Tracing Agent ,避免不必要的报错
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.1</version> </dependency>@qmdx
mybatis正式开始支持Spring 3.x AOT 编译了,Mybatis Plus是不打算支持AOT 编译还是?
会的话直接参与PR吧.
Comment From: wssy001
@wssy001 我就是用这个版本的,而且做了和那个参考项目一模一样的配置,还是一样的问题。很郁闷。。。
能否把项目 脱敏后 发到GitHub 并给我一个链接? 最好贴出具体的操作流程 @Bahramudin
Comment From: shihaoH
@wssy001 我就是用这个版本的,而且做了和那个参考项目一模一样的配置,还是一样的问题。很郁闷。。。
能否把项目 脱敏后 发到GitHub 并给我一个链接? 最好贴出具体的操作流程 @Bahramudin
@wssy001 谢谢老哥,用了你这个做法编译时没报错了,不过运行编译出的可执行文件时报错
Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
at org.springframework.util.Assert.notNull(Assert.java:204)
at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:125)
at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
... 69 common frames omitted
项目在 nimble 的 support-native-build 分支下
Comment From: wssy001
@shihaoH 如果完全放弃mybatis plus转向mybatis,请参考mybatis的官方wiki
如果想使用mybatis plus的BaseMapper和IService,可以参考我的回复
Comment From: wssy001
@huayanYu 我已经定位MP AOT编译失败的原因了,就是mybatis-plus-boot-starter:3.5.3.1 中依赖的mybatis版本过低导致的,只需将mybatis相关依赖升级至最新版,配合mybatis-spring-boot-starter的官方wiki就能顺利进行编译,希望MP团队能升级mybatis版本
Comment From: nieqiurong
5527 统一至此处讨论
Comment From: 865986682
当前使用版本(必填,否则不予处理)
Springboot 版本:3.0.6 Graalvm 版本:graalvm-ce-java17-22.3.1 Mybatis 版本:3.5.13 MyBatisPlus 版本:3.5.3.1 MyBatisPlusJoin 版本:1.4.2.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
当把项目使用GraalVM编译后运行的时候报错。
重现步骤(如果有就写完整)
报错信息
java.lang.ExceptionInInitializerError: null at org.mybatis.spring.mapper.MapperScannerConfigurer.postProcessBeanDefinitionRegistry(MapperScannerConfigurer.java:363) ~[web.exe:na] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:344) ~[na:na] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:145) ~[na:na] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[web.exe:6.0.8] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[web.exe:6.0.8] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[web.exe:3.0.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[web.exe:3.0.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[web.exe:3.0.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[web.exe:3.0.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[web.exe:3.0.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[web.exe:3.0.6] at com.adil.bms.web.BmsApplication.main(BmsApplication.java:19) ~[web.exe:na] Caused by: org.apache.ibatis.logging.LogException: Error creating logger for logger org.mybatis.spring.mapper.ClassPathMapperScanner. Cause: java.lang.NullPointerException at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:54) ~[na:na] at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:47) ~[na:na] at org.mybatis.logging.LoggerFactory.getLogger(LoggerFactory.java:32) ~[na:na] at org.mybatis.spring.mapper.ClassPathMapperScanner.<clinit>(ClassPathMapperScanner.java:61) ~[na:na] ... 12 common frames omitted Caused by: java.lang.NullPointerException: null at org.apache.ibatis.logging.LogFactory.getLog(LogFactory.java:52) ~[na:na] ... 15 common frames omitted
@Bahramudin 你好,这个问题解决了吗?
Comment From: Bahramudin
@865986682 还真没有解决,不知道怎么办?
Comment From: 865986682
@865986682 还真没有解决,不知道怎么办?
已经解决了,看这个 #5912 @Bahramudin