Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SpringBoot3运行native-image报错 #765

Open
weifengze opened this issue Aug 28, 2023 · 3 comments
Open

SpringBoot3运行native-image报错 #765

weifengze opened this issue Aug 28, 2023 · 3 comments

Comments

@weifengze
Copy link

weifengze commented Aug 28, 2023

  • [ √] 我已在 issues 搜索类似问题,并且不存在相同的问题.

异常模板

使用环境

  • PageHelper 版本: 1.4.7
  • 数据库类型和版本: MySQL 8.0.33
  • JDBC_URL:

完整异常信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': java.lang.InstantiationException: com.github.pagehelper.PageHelper
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
	at com.cmcc.transport.network.TransportNetworkConstructionDrawingsApplicationKt.main(TransportNetworkConstructionDrawingsApplication.kt:17)
Caused by: com.github.pagehelper.PageException: java.lang.InstantiationException: com.github.pagehelper.PageHelper
	at com.github.pagehelper.PageInterceptor.setProperties(PageInterceptor.java:219)
	at com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration.afterPropertiesSet(PageHelperAutoConfiguration.java:65)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
	... 16 common frames omitted
Caused by: java.lang.InstantiationException: com.github.pagehelper.PageHelper
	at java.base@17.0.8/java.lang.Class.newInstance(DynamicHub.java:639)
	at com.github.pagehelper.PageInterceptor.setProperties(PageInterceptor.java:217)
	... 19 common frames omitted
Caused by: java.lang.NoSuchMethodException: com.github.pagehelper.PageHelper.<init>()
	at java.base@17.0.8/java.lang.Class.checkMethod(DynamicHub.java:1038)
	at java.base@17.0.8/java.lang.Class.getConstructor0(DynamicHub.java:1204)
	at java.base@17.0.8/java.lang.Class.newInstance(DynamicHub.java:626)
	... 20 common frames omitted

代码示例Kotlin

object PageUtils : PageHelper() {
    /**
     * 设置请求分页数据
     */
    fun startPage() {
        val pageDomain = TableSupport.buildPageRequest()
        val pageNum = pageDomain.pageNum!!
        val pageSize = pageDomain.pageSize!!
        val orderBy = SqlUtil.escapeOrderBySql(pageDomain.orderBy)
        val reasonable = pageDomain.reasonable
        startPage<Any>(pageNum, pageSize, orderBy).reasonable = reasonable
    }

    /**
     * 清理分页的线程变量
     */
    fun clearPage() {
        PageHelper.clearPage()
    }
}
@tsingheng
Copy link

It is working for me.

@Configuration(proxyBeanMethods = false)
@ImportRuntimeHints(PageHelperNativeConfiguration.PageHelperRuntimeHintsRegistrar.class)
public class PageHelperNativeConfiguration {

    @Bean
    public PageHelperBeanFactoryInitializationAotProcessor pageHelperBeanFactoryInitializationAotProcessor() {
        return new PageHelperBeanFactoryInitializationAotProcessor();
    }

    static class PageHelperRuntimeHintsRegistrar implements RuntimeHintsRegistrar {

        @Override
        public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
            Stream.of(
                    PageHelper.class,
                    MySqlDialect.class,
                    BoundSql.class
            ).forEach(x -> hints.reflection().registerType(x, MemberCategory.values()));
        }
    }

    static class PageHelperBeanFactoryInitializationAotProcessor
            implements BeanFactoryInitializationAotProcessor, BeanRegistrationExcludeFilter {

        @Override
        public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
            return (context, code) -> {
                RuntimeHints hints = context.getRuntimeHints();
                hints.proxies().registerJdkProxy(Executor.class);
            };
        }

        @Override
        public boolean isExcludedFromAotProcessing(RegisteredBean registeredBean) {
            return false;
        }
    }
}

@weifengze
Copy link
Author

谢谢,有时间我试一下!

@abel533 abel533 pinned this issue Dec 4, 2023
@jonesmith518
Copy link

thanks it worked, helps me alot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants