我尝试在ibm RAD上开发JPA项目。我可以在Webpshere上成功运行它,但问题是我的机器太旧了。所以在Java容器中部署不是reasonable.And,我想在JSE.But上运行它,它会给出以下错误:
94 test INFO [main] openjpa.Runtime - Starting OpenJPA 1.2.1-SNAPSHOT
235 test INFO [main] openjpa.jdbc.JDBC - Using dictionary class "com.ibm.ws.persistence.jdbc.sql.DB2Dictionary".
1797 test WARN [main] openjpa.Enhance - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "[class Customer]".
Exception in thread "main" <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class Customer" has not been enhanced.
at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1650)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1624)
at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717)
at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1114)
at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:268)
at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:451)
at deneme.main(deneme.java:21)我错过了什么?
我的persistent.xml是:
**<?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="test" transaction-type="RESOURCE_LOCAL">
<provider>
com.ibm.websphere.persistence.PersistenceProviderImpl
</provider>
<class>Customer</class>
<properties>
<property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="openjpa.ConnectionURL" value="jdbc:db2://localhost:50000/PARUD:retrieveMessagesFromServerOnGetMessage=true;"/>
<property name="openjpa.ConnectionUserName" value="db2admin"/>
<property name="openjpa.ConnectionPassword" value="xxxxx"/>
<property name="openjpa.jdbc.Schema" value="POOL"/>
</properties>
</persistence-unit>
</persistence>**发布于 2010-01-24 21:57:21
只是一个指针:你需要增强你的类,例如在运行时,通过-javaagent:yourlib.jar,甚至在编译的时候。您可以了解有关此主题的更多信息here
“第二种也是推荐的get runtime增强方法是,在启动运行OpenJPA的JVM时提供一个javaagent。”
发布于 2011-05-07 03:32:41
我刚刚完成了让OpenJPA 2.1.0在Tomcat7.0上运行的练习。我根本不能让运行时增强在Tomcat下工作,所以我放弃了,决定使用构建时增强。我是在Eclipse下开发代码的,所以我遵循了下面的说明:
http://openjpa.apache.org/enhancement-with-eclipse.html
但是请注意,本页上的说明是针对一般java项目的。如果使用的是动态Web项目,请确保正确指定生成目录参数。我使用了-Dbuild.dir=build/classes,这是编译代码的典型位置。
你不得不接受的另一个恼人的怪癖。您必须使用"Project > Build Project“菜单项手动调用构建器。当增强器运行时,它会修改以前构建的类。因此,在发布到Tomcat之前,您需要点击项目的F5或Refresh。
https://stackoverflow.com/questions/2127263
复制相似问题