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