I'm trying to get a project using OpenJPA 1.2.1 moving. I'm having trouble trying to do enhancement at build time. I'm having other problems with enhancement at load time, so I would think I could get more information if I do this at build time.
In the following code excerpts, some things are replaced with "<<>>" wrappers, for paranoia's sake. The following is the relevant part of my build.xml: ---------- <path id="enhance.classpath"> <pathelement location="${openjpa.jar}"/> <pathelement location="${jpa.jar}"/> <pathelement location="${jta.jar}"/> <pathelement location="${commons-lang.jar}"/> <pathelement location="${serp.jar}"/> <pathelement location="src"/> <pathelement location="build/classes"/> </path> <taskdef classpathref="enhance.classpath" name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask"/> <target name="enhance.classes"> <openjpac directory="build/enhancedClasses"> <fileset dir="build/classes"> <include name="**/domain/*.class"/> </fileset> </openjpac> </target> --------------- Following is my "META-INF/persistence.xml" file: ---------------- <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="<<mypersistenceunit>>" transaction-type="JTA"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provid er> <jta-data-source>jdbc/catalog</jta-data-source> <mapping-file><<filepath>>/domain/orm.xml</mapping-file> <properties> <property name="openjpa.Log" value="DefaultLevel=TRACE"/> </properties> </persistence-unit> </persistence> ---------------- Following is my "domain/orm.xml" file: ---------------- <?xml version="1.0" encoding="UTF-8"?> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0"> <description><<application name>></description> <package><<packagepath>>.domain</package> <entity name="Catalog" class="<<packagepath>>.domain.Catalog"> </entity> </entity-mappings> ---------------- The following is my build output: ---------------- 16 dynamicContent TRACE [main] openjpa.Runtime - Setting the following properties from "file:/c:/Documents%20and%20Settings/<<pathtoproject>>/src/META-INF/pers istence.xml" into configuration: {openjpa.Log=DefaultLevel=TRACE, openjpa.MetaDataFactory=jpa(Resources=<<packagepath>>/domain/orm.xml), javax.persistence.provider=org.apache.openjpa.persistence.PersistencePro viderImpl, openjpa.ConnectionFactoryMode=managed, openjpa.TransactionMode=managed, openjpa.ConnectionFactoryName=jdbc/catalog, openjpa.Id=dynamicContent} 32 dynamicContent TRACE [main] openjpa.Runtime - No cache marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance. 188 dynamicContent TRACE [main] openjpa.Runtime - No cache marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance. java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: <<packagepath>>.domain.Catalog --------------- The "src" classpath entry is where it finds my "META-INF/persistence.xml" (which is shown in the build output). The "build/classes" classpath entry contains (at least) "<<packagepath>>.domain.Catalog.class". I don't understand why it's failing to find the domain class. Another problem I'm having is that I don't even get this far when I run the Ant task from Eclipse. Instead, I just get the following: --------------- enhance.classes: BUILD FAILED <<filepath>>\build.xml:50: java.lang.NoClassDefFoundError: org/apache/openjpa/lib/util/ParseException : org/apache/commons/lang/exception/NestableRuntimeException --------------- Line 50 is the "openjpac" call.