You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Vincenzo Brancato <vi...@googlemail.com> on 2012/03/26 11:32:41 UTC
JPA Enhancement with Eclipse and Ant: Class not found Exception
Hello,
I am new to openJPA. In the past I developed a few applications with
EclipseLink and Glassfish. My new task ist to port my application to Tomcat
and use openJPA. To understand openJPA I wrote a little test application
and I am getting crazy. First I used the Eclipse openJPA Plugin. This
worked partially. I was able to read from database and manipulate some
data. Then I googled a few errors I got and discovered that I need
buildtime enhancement. I have two classes: Todo.java and Todo_java. First
is my Managed Bean. The second class is my persistent Entity. Both classes
are annotated. I am using an persistence.xml that you can see here:
<?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="TODO" transaction-type="RESOURCE_LOCAL">
<class>openJPA.Todo_</class>
<properties>
<!-- Authentifizierungsinformationen zum Aufschalten auf die
Datenbank. -->
<property name="openjpa.ConnectionDriverName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="openjpa.ConnectionURL"
value="jdbc:oracle:thin:@12.235.789.123:1523:Test" />
<property name="openjpa.ConnectionUserName" value="XXX" />
<property name="openjpa.ConnectionPassword" value="XXX" />
<property name="openjpa.Log" value="DefaultLevel=TRACE"/>
</properties>
</persistence-unit>
</persistence>
This is my enhance.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="testJSF">
<path id="jpa.enhancement.classpath">
<pathelement location="build"/>
<!-- lib contains all of the jars that came with the OpenJPA binary
download -->
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="enhance">
<!-- define the openjpac task -->
<taskdef name="openjpac"
classname="org.apache.openjpa.ant.PCEnhancerTask">
<classpath refid="jpa.enhancement.classpath"/>
</taskdef>
<!-- invoke enhancer the enhancer -->
<openjpac>
<config propertiesFile="src/META-INF/persistence.xml" />
<classpath refid="jpa.enhancement.classpath"/>
<fileset dir="build">
<include name="**/*.class" />
</fileset>
</openjpac>
<echo message="Enhancing complete."/>
</target>
</project>
First the class "Todo_" was not found while building. Later I added
<include name="**/*.class" /> and that error went away. But now I get this
error:
Buildfile: C:\Users\XXX\EclipseWorkspace\testJSF\enhance.xml
enhance:
[openjpac] 12 TODO TRACE [Worker-74] openjpa.Runtime - Setting the
following properties from
"file:/C:/Users/XXX/EclipseWorkspace/testJSF/src/META-INF/persistence.xml"
into configuration: {openjpa.ConnectionPassword=dimsdev,
openjpa.ConnectionDriverName=oracle.jdbc.driver.OracleDriver,
openjpa.MetaDataFactory=jpa(Types=openJPA.Todo_),
openjpa.Log=DefaultLevel=TRACE, PersistenceVersion=2.0,
openjpa.ConnectionUserName=DIMSDEV,
openjpa.ConnectionURL=jdbc:oracle:thin:@12.235.789.123:1523:Test,
openjpa.Id=TODO}
[openjpac] 38 TODO TRACE [Worker-74] openjpa.Runtime - No cache
marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance.
[openjpac] 425 TODO TRACE [Worker-74] openjpa.Runtime - No cache
marshaller found for id org.apache.openjpa.conf.MetaDataCacheMaintenance.
[openjpac] java.lang.IllegalArgumentException:
java.lang.ClassNotFoundException: beans.TodoBean
[openjpac] at serp.util.Strings.toClass(Strings.java:164)
[openjpac] at serp.util.Strings.toClass(Strings.java:108)
[openjpac] at
org.apache.openjpa.lib.meta.ClassArgParser.parseTypes(ClassArgParser.java:164)
[openjpac] at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4779)
[openjpac] at
org.apache.openjpa.ant.PCEnhancerTask.executeOn(PCEnhancerTask.java:89)
[openjpac] at
org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:171)
[openjpac] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[openjpac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[openjpac] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
[openjpac] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[openjpac] at java.lang.reflect.Method.invoke(Unknown Source)
[openjpac] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[openjpac] at org.apache.tools.ant.Task.perform(Task.java:348)
[openjpac] at org.apache.tools.ant.Target.execute(Target.java:390)
[openjpac] at
org.apache.tools.ant.Target.performTasks(Target.java:411)
[openjpac] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[openjpac] at
org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[openjpac] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[openjpac] at
org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[openjpac] at
org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[openjpac] at
org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:665)
[openjpac] at
org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:498)
[openjpac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[openjpac] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
[openjpac] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[openjpac] at java.lang.reflect.Method.invoke(Unknown Source)
[openjpac] at org.eclipse.ant.core.AntRunner.run(AntRunner.java:378)
[openjpac] at
org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.runInSameVM(AntLaunchDelegate.java:321)
[openjpac] at
org.eclipse.ant.internal.launching.launchConfigurations.AntLaunchDelegate.launch(AntLaunchDelegate.java:274)
[openjpac] at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
[openjpac] at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
[openjpac] at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:696)
[openjpac] at
org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.launchBuild(ExternalToolBuilder.java:181)
[openjpac] at
org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.doBuildBasedOnScope(ExternalToolBuilder.java:169)
[openjpac] at
org.eclipse.core.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:88)
[openjpac] at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
[openjpac] at
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[openjpac] at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
[openjpac] at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
[openjpac] at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
[openjpac] at
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[openjpac] at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
[openjpac] at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
[openjpac] at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
[openjpac] at
org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513)
[openjpac] at
org.eclipse.core.internal.resources.Workspace.build(Workspace.java:422)
[openjpac] at
org.eclipse.ui.actions.GlobalBuildAction$1.run(GlobalBuildAction.java:180)
[openjpac] at
org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[openjpac] 464 TODO TRACE [Worker-74] openjpa.MetaData - Clearing
metadata repository "org.apache.openjpa.meta.MetaDataRepository@1da7c60".
BUILD FAILED
C:\Users\XXX\EclipseWorkspace\testJSF\enhance.xml:21:
java.lang.IllegalArgumentException: java.lang.ClassNotFoundException:
beans.TodoBean
Total time: 2 seconds
Why do I get this error? Now I assume that my entity "Todo_" was found by
the builder. But the builder wants to enhance my ManagedBean "Todo". Ist
this required? I mentioned only the "Todo_" class in my persistence.xml and
only the "Todo_" class is annotated as Entity. What should I do for getting
this little application (my first application) running.
Thanks in advance for your help
Steve