我尝试开发基于IBM RAD JPA项目。我可以在Webpshere成功运行它, 但问题是我的机器是很老。因此,在Java EE的部署容器不 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>**
有帮助吗?

解决方案

仅有一个指针: 您需要例如提高你的类在运行时通过-javaagent:yourlib.jar 甚至在编译时。你可以学习更多关于这个话题这里

“第二和推荐的方式获取运行时的增强是提供启动JVM时的OpenJPA会运行在javaagent。”

其他提示

我刚刚经历让OpenJPA的2.1.0的锻炼去在Tomcat 7.0上运行。我只是无法获得运行时间提高到Tomcat下工作,所以我放弃了,决定用构建时增强。我开发Eclipse下我的代码,所以我跟着这里的说明:

http://openjpa.apache.org/enhancement-with-eclipse.html

不过请注意,此页面上的说明是通用的Java项目。如果您正在使用动态Web项目时,一定要正确指定build目录的说法。我用-Dbuild.dir =构建/类是用于编译的代码的典型位置。

你不得不忍受一个更恼人的怪癖。您必须手动调用使用生成器“项目>构建项目”菜单项。当增强运行时,它会修改先前创建的类。因此,你需要按F5或刷新来为项目发布到Tomcat之前。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top