【发布时间】:2021-12-11 17:02:56
【问题描述】:
我正在尝试启动一个使用 eclipselink 和本地 H2 数据库的 javafx 应用程序,但出现以下错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.salesinvoicetools.salesinvoicetools/com.salesinvoicetools.AppWindow.subMain(AppWindow.java:62)
at com.salesinvoicetools.salesinvoicetools/com.salesinvoicetools.Starter.main(Starter.java:13)
Caused by: Exception [EclipseLink-30005] (Eclipse Persistence Services - 2.7.8.v20201217-ecdf3c32c4): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: jdk.internal.loader.ClassLoaders$AppClassLoader@233c0b17
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.8.v20201217-ecdf3c32c4): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [h2-localdb] failed.
Internal Exception: java.lang.IncompatibleClassChangeError: class org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAsmFactory$ClassMetadataVisitor can not implement org.eclipse.persistence.internal.libraries.asm.ClassVisitor, because it is not an interface (org.eclipse.persistence.internal.l
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:129)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:107)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177)
at javax.persistence@2.1.0/javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence@2.1.0/javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at com.salesinvoicetools.salesinvoicetools/com.salesinvoicetools.dataaccess.DataAccessBase.setEntityManager(DataAccessBase.java:23)
at com.salesinvoicetools.salesinvoicetools/com.salesinvoicetools.dataaccess.DataAccessBase.<clinit>(DataAccessBase.java:19)
... 2 more
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.8.v20201217-ecdf3c32c4): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [h2-localdb] failed.
Internal Exception: java.lang.IncompatibleClassChangeError: class org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAsmFactory$ClassMetadataVisitor can not implement org.eclipse.persistence.internal.libraries.asm.ClassVisitor, because it is not an interface (org.eclipse.persistence.internal.l
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:1950)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1941)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.callPredeploy(JPAInitializer.java:98)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:96)
... 7 more
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.8.v20201217-ecdf3c32c4): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [h2-localdb] failed.
Internal Exception: java.lang.IncompatibleClassChangeError: class org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAsmFactory$ClassMetadataVisitor can not implement org.eclipse.persistence.internal.libraries.asm.ClassVisitor, because it is not an interface (org.eclipse.persistence.internal.l
at org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:233)
... 11 more
Caused by: java.lang.IncompatibleClassChangeError: class org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAsmFactory$ClassMetadataVisitor can not implement org.eclipse.persistence.internal.libraries.asm.ClassVisitor, because it is not an interface (org.eclipse.persistence.internal.l
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1088)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:814)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:735)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:660)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processEntityMappings(MetadataProcessor.java:538)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:581)
at org.eclipse.persistence.jpa@2.5.0/org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1865)
... 9 more
我从一个也使用 h2 和 eclipselink 的旧 eclipse 项目中复制了持久性代码,但现在它没有启动。 我尝试在 module-info.java 中添加几个 requires 语句,但仍然没有变化。
以下是 pom.xml 文件中的条目:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
有什么想法吗?
【问题讨论】:
标签: java jpa eclipselink h2