Spring-boot version:3.0.5

I define a new class extende ClassPathBeanDefinitionScanner:

lang=java

public class RpcComponentScanner extends ClassPathBeanDefinitionScanner {

    public RpcComponentScanner(BeanDefinitionRegistry registry) {
        super(registry);
    }

    public void registerDefaultFilters() {
        this.addIncludeFilter(new AnnotationTypeFilter(MyRPCService.class));
    }

    public Set<BeanDefinitionHolder> doScan(String... basePackages) {
        Set<BeanDefinitionHolder> beanDefinitions = super.doScan(basePackages);
        return beanDefinitions;
    }  

 // ....... other codes
}

and implements BeanFactoryPostProcessor,this class will invode RpcComponentScanner.scan() when spring application startup.

@Component
public class RpcComponentProcesser implements BeanFactoryPostProcessor, BeanPostProcessor, ApplicationContextAware {

   @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        String basePackage ="com.demo";// value is "com.demo"

        if (!(beanFactory instanceof BeanDefinitionRegistry)){
            return;
        }

        RpcComponentScanner scanner = new RpcComponentScanner((BeanDefinitionRegistry) beanFactory);
        scanner.setResourceLoader(applicationContext);

       scanner.scan(RpcConstants.COMMA_SPLIT_PATTERN.split(basePackage));// This line runs success in JVM,but failed in AOT.The code compile successful with graalvm,but startup with exceptions 
    }

 // ....... other codes

}

I have registerd RpcComponentProcesser and RpcComponentScanner,MyRPCService in RuntimeHints class which implements RuntimeHintsRegistrar.

The detail exception log is:

java.lang.IllegalStateException: Cannot load optional framework class: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:206) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:138) ~[na:na]
        at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:258) ~[nbs-bootstrap.exe:6.0.7]
        at com.tplink.ignite.rpc.processer.RpcComponentProcesser.postProcessBeanFactory(RpcComponentProcesser.java:61) ~[nbs-bootstrap.exe:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:358) ~[na:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:201) ~[na:na]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[nbs-bootstrap.exe:3.0.5]
        at com.tplink.ignite.platform.cms.CmsApplication.main(CmsApplication.java:48) ~[nbs-bootstrap.exe:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at java.base@17.0.6/java.lang.Class.forName(DynamicHub.java:1132) ~[nbs-bootstrap.exe:na]
        at org.springframework.util.ClassUtils.forName(ClassUtils.java:283) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:202) ~[na:na]
        ... 14 common frames omitted
16:37:41.885 [main] INFO  c.t.i.p.c.bootstrap.SpringTrigger - ......... server start error.........
java.lang.IllegalStateException: Cannot load optional framework class: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:206) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:138) ~[na:na]
        at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:258) ~[nbs-bootstrap.exe:6.0.7]
        at com.tplink.ignite.rpc.processer.RpcComponentProcesser.postProcessBeanFactory(RpcComponentProcesser.java:61) ~[nbs-bootstrap.exe:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:358) ~[na:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:201) ~[na:na]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[nbs-bootstrap.exe:3.0.5]
        at com.tplink.ignite.platform.cms.CmsApplication.main(CmsApplication.java:48) ~[nbs-bootstrap.exe:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at java.base@17.0.6/java.lang.Class.forName(DynamicHub.java:1132) ~[nbs-bootstrap.exe:na]
        at org.springframework.util.ClassUtils.forName(ClassUtils.java:283) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:202) ~[na:na]
        ... 14 common frames omitted
16:37:41.895 [main] ERROR o.s.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Cannot load optional framework class: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:206) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:138) ~[na:na]
        at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:258) ~[nbs-bootstrap.exe:6.0.7]
        at com.tplink.ignite.rpc.processer.RpcComponentProcesser.postProcessBeanFactory(RpcComponentProcesser.java:61) ~[nbs-bootstrap.exe:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:358) ~[na:na]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:201) ~[na:na]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[nbs-bootstrap.exe:6.0.7]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[nbs-bootstrap.exe:3.0.5]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[nbs-bootstrap.exe:3.0.5]
        at com.tplink.ignite.platform.cms.CmsApplication.main(CmsApplication.java:48) ~[nbs-bootstrap.exe:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
        at java.base@17.0.6/java.lang.Class.forName(DynamicHub.java:1132) ~[nbs-bootstrap.exe:na]
        at org.springframework.util.ClassUtils.forName(ClassUtils.java:283) ~[na:na]
        at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:202) ~[na:na]
        ... 14 common frames omitted

can anyone help me? Thanks!

Comment From: wzce

when I remove the line:

scanner.scan(RpcConstants.COMMA_SPLIT_PATTERN.split(basePackage));/

The application run successful.

Comment From: wilkinsona

Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use GitHub issues only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug.