java.lang.NoClassDefFoundError: (initialization failure) raised when @MappedSuperClass is present
in a jar
----------------------------------------------------------------------------------------------------------
Key: OPENJPA-2003
URL: https://issues.apache.org/jira/browse/OPENJPA-2003
Project: OpenJPA
Issue Type: Bug
Components: jpa
Affects Versions: 1.2.2
Environment: Spring 3.0x, JUnit 4.4
Reporter: reverttoconsole
I have a @MappedSuperclass BaseEntity (empty) that's include in a common-utils.jar. In another
maven project, I have JPA 1.0 entities which extend BaseEntity. On running a unit test, I
get the following error:
Caused by: java.lang.NoClassDefFoundError: xxx.entity.ProfileLoadError (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1522)
at org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypesInternal(MetaDataRepository.java:1504)
at org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypesLocking(MetaDataRepository.java:1491)
at org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1484)
at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:276)
at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:190)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:612)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:423)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:485)
at $Proxy21.createEntityManager(Unknown Source)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:234)
at $Proxy22.persist(Unknown Source)
at org.frb.bos.tcms.profile.SeedData.afterPropertiesSet(SeedData.java:37)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 37 more
If I move the BaseEntity into the maven project, I don't get this error.
Turns out that the error is gone when I include BaseEntity in persistence.xml. But it seems
to me that this has to be documented clearly or atleast the error message should be clearer
because NoClassDefFoundError is misleading. Maybe openjpa's classloader doesn't automatically
scan the classpath for the missing entities?
I don't get this error in hibernate.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
|