当前使用版本(必填,否则不予处理)

3.5.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

使用graalvm编译springboot3.1.1为exe程序,编译springboot是没问题的,mybatis也没问题,当项目有使用mybatis-plus的话编译会报错,经过排查发现和mybatisplus引用的mybatis版本太老了有关系

重现步骤(如果有就写完整)

按照springboot3官方文档上操作, 1.下载graalvm 2.安装visual studio c++环境 3.项目引入maven插件 org.graalvm.buildtools native-maven-plugin 0.9.23 4.在项目目录下执行 mvn -Pnative native:compile 命令开始编译

报错信息

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

5527 统一至此处讨论.