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

[Native Image] JPA configuration with Graal 17 native image #10839

Open
1 of 2 tasks
slowbreathing opened this issue Mar 11, 2025 · 1 comment
Open
1 of 2 tasks

[Native Image] JPA configuration with Graal 17 native image #10839

slowbreathing opened this issue Mar 11, 2025 · 1 comment
Assignees

Comments

@slowbreathing
Copy link

slowbreathing commented Mar 11, 2025

Describe the Issue

(https://drive.google.com/file/d/1VhiNjbatpojBah1XOaYRBN8NKWDMkzpw/view?usp=sharing
)
Have been hitting this issue regularly with SpringBoot 3.4.x native image with graal 17.

Above is complete yet minimal sample that reproduces the problem. 2 sets of command produce similar but not identical errors.

Below are the commands to recreate it with Gradle 7.6.4 and Graal Java(TM) SE Runtime Environment Oracle GraalVM 17.0.11+7.1

  1. gradle build -x test :microservices:review-service:nativeCompile -Pprofile=instrumented &&
    docker compose -f docker-compose-app-native-instrumented.yml build &&
    docker compose -f docker-compose-app-native-instrumented.yml up

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': null
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1812)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
native-query-error3-review-1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:346)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
native-query-error3-review-1 | at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
native-query-error3-review-1 | at com.stillwaters.playground.microservices.core.review.ReviewServiceApplication.main(ReviewServiceApplication.java:45)
native-query-error3-review-1 | Caused by: java.lang.ExceptionInInitializerError
native-query-error3-review-1 | at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1859)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808)
native-query-error3-review-1 | ... 15 more
native-query-error3-review-1 | Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.internal.EntityManagerMessageLogger (implementation not found)
native-query-error3-review-1 | at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2630)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2570)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2552)
native-query-error3-review-1 | at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:28)
native-query-error3-review-1 | at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:24)
native-query-error3-review-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:144)
native-query-error3-review-1 | ... 22 more
native-query-error3-review-1 exited with code 1

2. gradle build -x test :microservices:review-service:bootBuildImage &&
docker compose -f docker-compose-app-native.yml up

Application run failed
native-query-error3-review-1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': null
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1812)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
native-query-error3-review-1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:346)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
native-query-error3-review-1 | at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
native-query-error3-review-1 | at com.stillwaters.playground.microservices.core.review.ReviewServiceApplication.main(ReviewServiceApplication.java:45)
native-query-error3-review-1 | Caused by: java.lang.ExceptionInInitializerError
native-query-error3-review-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:157)
native-query-error3-review-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:81)
native-query-error3-review-1 | at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130)
native-query-error3-review-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
native-query-error3-review-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
native-query-error3-review-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
native-query-error3-review-1 | at org.hibernate.boot.model.relational.Database.(Database.java:45)
native-query-error3-review-1 | at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:226)
native-query-error3-review-1 | at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:194)
native-query-error3-review-1 | at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:171)
native-query-error3-review-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1442)
native-query-error3-review-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1513)
native-query-error3-review-1 | at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1859)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808)
native-query-error3-review-1 | ... 15 more
native-query-error3-review-1 | Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.internal.log.ConnectionInfoLogger (implementation not found)
native-query-error3-review-1 | at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2630)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2570)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2552)
native-query-error3-review-1 | at org.hibernate.internal.log.ConnectionInfoLogger.(ConnectionInfoLogger.java:38)
native-query-error3-review-1 | ... 34 more
native-query-error3-review-1 exited with code 1

Any help will be greatly appreciated.

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

java version "17.0.11" 2024-04-16 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 17.0.11+7.1 (build 17.0.11+7-LTS-jvmci-23.0-b34)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.11+7.1 (build 17.0.11+7-LTS-jvmci-23.0-b34, mixed mode, sharing)

Operating System and Version

Linux Nanus-Stillwaters 6.8.0-52-generic #53~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jan 15 19:18:46 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Troubleshooting Confirmation

Run Command

gradle build -x test :microservices:review-service:nativeCompile -Pprofile=instrumented &&
docker compose -f docker-compose-app-native-instrumented.yml build &&
docker compose -f docker-compose-app-native-instrumented.yml up

Expected Behavior

Expected it to run

Actual Behavior

Throw error and exits

Steps to Reproduce

gradle build -x test :microservices:review-service:nativeCompile -Pprofile=instrumented &&
docker compose -f docker-compose-app-native-instrumented.yml build &&
docker compose -f docker-compose-app-native-instrumented.yml up

Additional Context

No response

Run-Time Log Output and Error Messages

Application run failed
native-query-error3-review-1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': null
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1812)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
native-query-error3-review-1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:346)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970)
native-query-error3-review-1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
native-query-error3-review-1 | at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
native-query-error3-review-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
native-query-error3-review-1 | at com.stillwaters.playground.microservices.core.review.ReviewServiceApplication.main(ReviewServiceApplication.java:45)
native-query-error3-review-1 | Caused by: java.lang.ExceptionInInitializerError
native-query-error3-review-1 | at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419)
native-query-error3-review-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400)
native-query-error3-review-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1859)
native-query-error3-review-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808)
native-query-error3-review-1 | ... 15 more
native-query-error3-review-1 | Caused by: java.lang.IllegalArgumentException: Invalid logger interface org.hibernate.internal.EntityManagerMessageLogger (implementation not found)
native-query-error3-review-1 | at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2630)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2570)
native-query-error3-review-1 | at org.jboss.logging.Logger.getMessageLogger(Logger.java:2552)
native-query-error3-review-1 | at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:28)
native-query-error3-review-1 | at org.hibernate.internal.HEMLogging.messageLogger(HEMLogging.java:24)
native-query-error3-review-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:144)
native-query-error3-review-1 | ... 22 more
native-query-error3-review-1 exited with code 1

@fernando-valdez
Copy link
Member

Hello @slowbreathing, seems like you are using a very old version of GraalVM. Please use the latest release of GraalVM JDK17 and let me know if the issue persists.

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

No branches or pull requests

2 participants