2010-01-24 54 views
5

Tôi cố gắng phát triển dự án JPA trên ibm RAD. Và tôi có thể chạy nó trên Webpshere thành công, nhưng vấn đề là máy của tôi là khá cũ. Vì vậy, việc triển khai trong Java EE chứa không phải là reasonable.And tôi muốn chạy nó trên JSE.But nó mang lại cho lỗi sau:openJPA trên Java SE

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) 

gì tôi đang thiếu?

Đến persistent.xml của tôi là:

**<?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>** 

Trả lời

8

Chỉ cần một con trỏ: Bạn cần phải tăng cường các lớp học của bạn ví dụ tại thời gian chạy qua -javaagent: yourlib.jar hoặc thậm chí trong khi biên dịch. Bạn có thể tìm hiểu thêm về chủ đề này here:

"Cách thứ hai và được khuyến nghị tăng cường thời gian chạy là cung cấp một javaagent khi khởi chạy JVM mà OpenJPA đang chạy."

+0

có tôi đã thử javaagent.like này -javaagent: C: \ Program Files \ IBM \ WebSphere \ AppServer \ plugins \ com.ibm.ws.jpa.jar nó cho lỗi: "Không thể tạo máy ảo Java " – qasanov

+0

vấn đề là không gian" Program Files "tại đây. Tôi đã chuyển tệp dưới "C: \ com.ibm.ws.jpa.jar" và mọi thứ có vẻ ổn. cảm ơn trước :) – qasanov

0

Tôi vừa thực hiện việc chạy OpenJPA 2.1.0 để chạy trên Tomcat 7.0. Tôi chỉ đơn giản là không thể có được tăng cường thời gian chạy để làm việc theo Tomcat vì vậy tôi đã từ bỏ và quyết định sử dụng tăng cường thời gian xây dựng. Tôi đang phát triển mã của tôi dưới Eclipse vì vậy tôi theo các hướng dẫn ở đây:

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

Lưu ý tuy nhiên rằng các hướng dẫn trên trang này là cho các dự án java generic. Nếu bạn đang làm việc với các dự án Web động, hãy chắc chắn chỉ định đối số thư mục build một cách chính xác. Tôi đã sử dụng -Dbuild.dir = build/classes là vị trí điển hình cho mã được biên dịch.

Một quirk khó chịu hơn mà bạn phải sống cùng. Bạn phải tự gọi trình tạo bằng cách sử dụng mục trình đơn "Project> Build Project". Khi trình tăng cường chạy, nó sửa đổi các lớp đã được tạo trước đó. Do đó, bạn cần nhấn F5 hoặc Làm mới cho dự án trước khi bạn xuất bản lên Tomcat.

Các vấn đề liên quan