当前使用版本(必填,否则不予处理)
3.5.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用graalvm编译springboot3.1.1为exe程序,编译springboot是没问题的,mybatis也没问题,当项目有使用mybatis-plus的话编译会报错,经过排查发现和mybatisplus引用的mybatis版本太老了有关系
重现步骤(如果有就写完整)
按照springboot3官方文档上操作,
1.下载graalvm
2.安装visual studio c++环境
3.项目引入maven插件
报错信息
Exception in thread "main" org.springframework.boot.context.properties.bind.MissingParametersCompilerArgumentException: Constructor binding in a native image requires compilation with -parameters but the following classes were compi led without it: org.apache.ibatis.builder.CacheRefResolver org.apache.ibatis.mapping.ResultFlag org.apache.ibatis.builder.annotation.MethodResolver org.apache.ibatis.parsing.XNode org.apache.ibatis.builder.ResultMapResolver
at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar.registerHints(BindableRuntimeHintsRegistrar.java:90)
at org.springframework.boot.context.properties.ConfigurationPropertiesBeanFactoryInitializationAotProcessor$ConfigurationPropertiesReflectionHintsContribution.applyTo(ConfigurationPropertiesBeanFactoryInitializationAotProces
sor.java:70) at org.springframework.context.aot.BeanFactoryInitializationAotContributions.applyTo(BeanFactoryInitializationAotContributions.java:78) at org.springframework.context.aot.ApplicationContextAotGenerator.lambda$processAheadOfTime$0(ApplicationContextAotGenerator.java:58) at org.springframework.context.aot.ApplicationContextAotGenerator.withCglibClassHandler(ApplicationContextAotGenerator.java:67) at org.springframework.context.aot.ApplicationContextAotGenerator.processAheadOfTime(ApplicationContextAotGenerator.java:53) at org.springframework.context.aot.ContextAotProcessor.performAotProcessing(ContextAotProcessor.java:106) at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:84) at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:49) at org.springframework.context.aot.AbstractAotProcessor.process(AbstractAotProcessor.java:82) at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80)
Comment From: nieqiurong
需要升级mybatis和mybatis-spring的,不过目前lambda语法还不支持.
基于mybaits官方那个示例改的,可以参考升级一下 https://github.com/nieqiurong/mybatis-native-demo
Comment From: yangmy666
是因为mybatis和mybatis-spring里用了labmba语法所以才不能被Spring AOT process 生成反射配置文件导致的吗
| | @. | | @. |
---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年07月14日 18:10 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [baomidou/mybatis-plus] Springboot3使用Graalvm编译可执行程序引入mybatis-plus时报错 (Issue #5464) |
需要升级mybatis和mybatis-spring的,不过目前lambda语法还不支持.
基于mybaits官方那个示例改的,可以参考升级一下 https://github.com/nieqiurong/mybatis-native-demo
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
Comment From: nieqiurong
是因为mybatis和mybatis-spring里用了labmba语法所以才不能被Spring AOT process 生成反射配置文件导致的吗 | | @. | | @. | … ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年07月14日 18:10 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [baomidou/mybatis-plus] Springboot3使用Graalvm编译可执行程序引入mybatis-plus时报错 (Issue #5464) | 需要升级mybatis和mybatis-spring的,不过目前lambda语法还不支持. 基于mybaits官方那个示例改的,可以参考升级一下 https://github.com/nieqiurong/mybatis-native-demo — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
不是,是现在mybatis-plus不支持,前面编译的问题可以升级mybaits和mybatis-spring版本,但需要改动一点aot配置的.
Comment From: wssy001
可以参考这个discussion
Comment From: nieqiurong