Interestingly, when I crank the logging up, and when OpenJPA is reporting
its properties, it says:

openjpa.RuntimeUnenhancedClasses: 0

Like I said, I have

            <property name="openjpa.RuntimeUnenhancedClasses"
value="supported" />

...in my persistence.xml.  Is something happening here?

Thanks,
Laird

On Wed, May 12, 2010 at 4:00 PM, Laird Nelson <[email protected]> wrote:

> I'm getting an odd NoClassDefFoundError while running unit tests in a
> standard Java SE environment.  I'm on Java 6 with OpenJPA 2.0.0-beta3.
>
> I have an AbstractType class that is a @MappedSuperclass.  It is in one jar
> file.
> It contains, among other things, an @Id mapping, and a couple of
> straightforward @Basic/@Column mappings (no joins, no embeddables, nothing
> complicated).
>
> Then I have a class, RelationshipRoleTypeEntity, that extends from it.  It
> is an @Entity and adds no additional persistent fields.
>
> The jar file and the classpath root containing my
> RelationshipRoleTypeEntity.class are both on the classpath.
>
> Hibernate loads and runs this fine.
>
> OpenJPA says:
>
> java.lang.NoClassDefFoundError: Could not initialize class
> com.jenzabar.ngp.constituent.jpa.RelationshipRoleTypeEntity
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:247)
>     at
> org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1525)
>     at
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypesInternal(MetaDataRepository.java:1501)
>     at
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1479)
>     at
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1459)
>     at
> org.apache.openjpa.jdbc.meta.MappingRepository.findBaseClassMapping(MappingRepository.java:1516)
>     at
> org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:403)
>     at
> org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:736)
>     at
> org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:625)
>     at
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:385)
>     at
> org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:358)
>     at
> org.apache.openjpa.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:355)
>     at
> org.apache.openjpa.jdbc.meta.MappingTool.getMapping(MappingTool.java:679)
>     at
> org.apache.openjpa.jdbc.meta.MappingTool.buildSchema(MappingTool.java:751)
>     at org.apache.openjpa.jdbc.meta.MappingTool.run(MappingTool.java:649)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:149)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:117)
>     at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:199)
>     at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:151)
>     at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:57)
>
> I've found that often this means that I've forgotten to put a
> <class>xyz</class> entry in my persistence.xml, but that is present as well.
>
> Other interesting bits in the log before the ultimate error:
>
> 1328  test-OpenJPA  TRACE  [main] openjpa.Enhance - Enhancing type "class
> com.jenzabar.ngp.constituent.jpa.RelationshipRoleTypeEntity" loaded by
> org.apache.openjpa.lib.util.temporaryclassloa...@1b4c1d7.
> 1735  test-OpenJPA  WARN   [main] openjpa.MetaData - The class
> "com.jenzabar.ngp.constituent.jpa.RelationshipRoleTypeEntity" listed in the
> openjpa.MetaDataFactory configuration property could not be loaded by
> sun.misc.launcher$appclassloa...@35ce36; ignoring.
> 1735  test-OpenJPA  TRACE  [main] openjpa.MetaData -
> java.lang.NoSuchMethodError:
> com.jenzabar.ngp.identity.jpa.AbstractType.pcGetManagedFieldCount()I
> java.lang.NoSuchMethodError:
> com.jenzabar.ngp.identity.jpa.AbstractType.pcGetManagedFieldCount()I
>
>
> I have the property openjpa.RuntimeUnenhancedClasses="supported" set
> because I am running in a unit test environment where I vet my mappings
> against Hibernate, OpenJPA and EclipseLink, so multiple Java agents
> (OpenJPA's, EclipseLink's) would cause trouble.
>
> I have no problem with plenty of other mappings in this unit testing setup.
>
> Where should I start looking to debug this problem?
>
> Best,
> Laird
>

Reply via email to