org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class

Dear Team,

I have added dependency compile(‘com.haulmont.cuba:cuba-core:7.2.15’) in build.gradle file to get access to JPA Persistence to execute native SQL queries.

configure(globalModule) {
dependencies {
compile(‘com.haulmont.cuba:cuba-core:7.2.15’)
if (!JavaVersion.current().isJava8()) {
runtime(‘javax.xml.bind:jaxb-api:2.3.1’)
runtime(‘org.glassfish.jaxb:jaxb-runtime:2.3.1’)
}
}

Post that I am facing below error. Any help is appreciated.

9:40:21.021 ERROR c.h.c.c.s.AbstractWebAppContextLoader - Error initializing application
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/D:/XYZ/CUBA/xyz-crm-case-management/deploy/tomcat/shared/lib/cuba-core-7.2.15.jar!/com/haulmont/cuba/security/app/role/FilterRoleDefinition.class]; nested exception is java.lang.NoClassDefFoundError: [Lcom/haulmont/cuba/security/entity/EntityOp;
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:452) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:315) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:90) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1391) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1371) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:511) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:338) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:257) ~[spring-beans-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:128) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:94) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:638) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.afterPropertiesSet(AbstractRefreshableConfigApplicationContext.java:154) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at com.haulmont.cuba.core.sys.CubaClassPathXmlApplicationContext.(CubaClassPathXmlApplicationContext.java:42) ~[cuba-global-7.2.15.jar:7.2.15]
at com.haulmont.cuba.core.sys.AbstractAppContextLoader.createApplicationContext(AbstractAppContextLoader.java:97) ~[cuba-global-7.2.15.jar:7.2.15]
at com.haulmont.cuba.core.sys.AbstractAppContextLoader.initAppContext(AbstractAppContextLoader.java:65) ~[cuba-global-7.2.15.jar:7.2.15]
at com.haulmont.cuba.core.sys.AbstractWebAppContextLoader.contextInitialized(AbstractWebAppContextLoader.java:86) ~[cuba-global-7.2.15.jar:7.2.15]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4678) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5139) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.38]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) [catalina.jar:9.0.38]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706) [catalina.jar:9.0.38]
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133) [catalina.jar:9.0.38]
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1866) [catalina.jar:9.0.38]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_291]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_291]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.38]
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) [na:1.8.0_291]
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1045) [catalina.jar:9.0.38]
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:429) [catalina.jar:9.0.38]
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576) [catalina.jar:9.0.38]
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina.jar:9.0.38]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.38]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) [catalina.jar:9.0.38]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) [catalina.jar:9.0.38]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_291]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.38]
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_291]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.38]
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) [catalina.jar:9.0.38]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.38]
at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina.jar:9.0.38]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291]
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) [bootstrap.jar:9.0.38]
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) [bootstrap.jar:9.0.38]
Caused by: java.lang.NoClassDefFoundError: [Lcom/haulmont/cuba/security/entity/EntityOp;
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_291]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_291]
at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_291]
at org.springframework.core.annotation.AttributeMethods.compute(AttributeMethods.java:256) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324) ~[na:1.8.0_291]
at org.springframework.core.annotation.AttributeMethods.forAnnotationType(AttributeMethods.java:252) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMapping.(AnnotationTypeMapping.java:96) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.addIfPossible(AnnotationTypeMappings.java:112) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.addAllMappings(AnnotationTypeMappings.java:75) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.(AnnotationTypeMappings.java:68) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.(AnnotationTypeMappings.java:46) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings$Cache.createMappings(AnnotationTypeMappings.java:245) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324) ~[na:1.8.0_291]
at org.springframework.core.annotation.AnnotationTypeMappings$Cache.get(AnnotationTypeMappings.java:241) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.forAnnotationType(AnnotationTypeMappings.java:199) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.forAnnotationType(AnnotationTypeMappings.java:182) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.AnnotationTypeMappings.forAnnotationType(AnnotationTypeMappings.java:169) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.TypeMappedAnnotation.of(TypeMappedAnnotation.java:597) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.annotation.MergedAnnotation.of(MergedAnnotation.java:610) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.type.classreading.MergedAnnotationReadingVisitor.visitEnd(MergedAnnotationReadingVisitor.java:96) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.asm.ClassReader.readElementValues(ClassReader.java:2985) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.asm.ClassReader.readMethod(ClassReader.java:1393) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.asm.ClassReader.accept(ClassReader.java:718) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.asm.ClassReader.accept(ClassReader.java:401) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReader.(SimpleMetadataReader.java:49) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123) ~[spring-core-5.2.16.RELEASE.jar:5.2.16.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScannin`gCandidateComponentProvider.java:429) ~[spring-context-5.2.16.RELEASE.jar:5.2.16.RELEASE]
… 68 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.haulmont.cuba.security.entity.EntityOp
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_291]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_291]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_291]
… 96 common frames omitted

Regards
Zafar

1 Like

Hi,

You shouldn’t do such things with dependencies, global or web module cannot depend on core.
If you need to execute native SQL queries, do the following:

  • Create a middleware service with some methods CUBA Studio User Guide
  • Execute native SQL in the service implementation which is located in the core module
  • Call middleware service from any place in the code, because service definition is located in the global module.
1 Like

Wow!! It did the Magic. Thanks a lot for very quick revert.