2010-01-24 18 views
5

पर ओपनजेपीए I आईबीएम आरएडी पर जेपीए प्रोजेक्ट विकसित करने का प्रयास करें। और मैं इसे वेबस्पेयर पर सफलतापूर्वक चला सकता हूं, लेकिन समस्या यह है कि मेरी मशीन काफी पुरानी है।जावा एसई

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) 

मैं क्या याद कर रहा हूँ: तो जावा ईई कंटेनर में तैनाती reasonable.And मैं इसे JSE.But पर उसे चलाना चाहते हैं त्रुटि निम्न देता नहीं है?

मेरी 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>** 

उत्तर

8

बस एक सूचक: आप जैसे अपनी कक्षाओं को बढ़ाने की जरूरत है रनटाइम के माध्यम से -जवाजेंट: yourlib.jar या संकलन के दौरान भी। आप इस विषय here के बारे में अधिक सीख सकते हैं:

"दूसरी और सुझाया गया तरीका क्रम वृद्धि प्राप्त एक javaagent प्रदान करने के लिए जब JVM कि OpenJPA में चला जा रहा है की शुरूआत है।"

+0

हाँ मैं javaagent.like इस -javaagent की कोशिश की \ Program Files \ आईबीएम \ WebSphere \ AppServer \ plugins \ com.ibm.ws.jpa.jar यह त्रुटि देता है: "जावा वर्चुअल मशीन नहीं बना सका " – qasanov

+0

समस्या यहां" प्रोग्राम फ़ाइलें "थी। मैंने "सी: \ com.ibm.ws.jpa.jar" के तहत फ़ाइल ले जाया और हमेशा कुछ ठीक लगता है। अग्रिम में धन्यवाद :) – qasanov

0

मैं टॉमकैट 7.0 पर चलाने के लिए ओपनजेपीए 2.1.0 प्राप्त करने के अभ्यास से गुजर गया। मैं टॉमकैट के तहत काम करने के लिए रन-टाइम एन्हांसमेंट प्राप्त करने में असमर्थ था इसलिए मैंने छोड़ दिया और बिल्ड-टाइम एन्हांसमेंट का उपयोग करने का फैसला किया। मैं ग्रहण के तहत मेरे कोड को विकसित कर रहा हूँ तो मैं यहां दिए गए निर्देशों का पालन किया:

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

नोट तथापि कि इस पृष्ठ पर दिए गए निर्देशों का सामान्य जावा परियोजनाओं के लिए कर रहे हैं। यदि आप डायनामिक वेब प्रोजेक्ट्स के साथ काम कर रहे हैं, तो बिल्ड निर्देशिका तर्क को सही तरीके से निर्दिष्ट करना सुनिश्चित करें। मैंने -Dbuild.dir = बिल्ड/कक्षाओं का उपयोग किया जो संकलित कोड के लिए सामान्य स्थान है।

एक और कष्टप्रद क्विर्क आपको साथ रहना है। आपको "प्रोजेक्ट> बिल्ड प्रोजेक्ट" मेनू आइटम का उपयोग करके मैन्युअल रूप से निर्माता का आह्वान करना होगा। जब विस्तारक चलता है, तो यह पहले निर्मित कक्षाओं को संशोधित करता है। नतीजतन, आप टॉमकैट पर प्रकाशित करने से पहले परियोजना के लिए F5 या ताज़ा करने की आवश्यकता है। C:

संबंधित मुद्दे