2013-02-02 46 views
5

पर त्रुटि मैं ऐप इंजन और मेवेन कॉन्फ़िगरेशन के साथ जेडीओ का उपयोग करके एक सरल परीक्षण बनाने की कोशिश कर रहा हूं।ऐप इंजन, जेडीओ और मेवेन। स्टार्टअप

मेरा संकलन और डेटा वृद्धि चरण सफल हुआ। लेकिन क्रम में (दोनों mvn: परीक्षण और appengine: devserver) मैं:

1) Error in custom provider, javax.jdo.JDOFatalInternalException: 
Class "com.google.appengine.datanucleus.DatastoreManager" was not found in the CLASSPATH. 
Please check your specification and your CLASSPATH. 

लेकिन, मेरा classpath (लक्ष्य/डेमो/वेब-INF/lib) में क्या है: datanucleus-appengine-2.1.1.jar

और मेरी निर्भरता गूगल datanucleus परियोजना की पोम में निर्दिष्ट की गई के रूप में ही कर रहे हैं:

<dependency> 
    <groupId>javax.jdo</groupId> 
    <artifactId>jdo-api</artifactId> 
    <version>3.0.1</version> 
    </dependency> 
    <dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-core</artifactId> 
    <version>[3.1.1, 3.2)</version> 
    <scope>runtime</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-api-jdo</artifactId> 
    <version>[3.1.1, 3.2)</version> 
    </dependency> 
    <dependency> 
    <groupId>com.google.appengine.orm</groupId> 
    <artifactId>datanucleus-appengine</artifactId> 
    <version>2.1.1</version> 
    </dependency> 

किसी भी सुझाव की सराहना।

आरबी

+0

datanucleus साथ JDO संस्करण के साथ एक संघर्ष हो सकता है के लिए। डाटान्यूक्लियस-कोर को 3.0 – Sabarish

+0

@ सबरिश में बदलें, मैंने कई संस्करण संयोजनों का प्रयास किया है। ऐप इंजन ओआरएम प्रोजेक्ट में संदर्भित उन लोगों से शुरू करना (यानी, जेडीओ: 3.0.1, डेटा न्यूक्लियस: [3.1.1,3.2), ओआरएम: 2.1.1): https://code.google.com/p/ डेटान्यूक्लियस-एपेंगिन/स्रोत/ब्राउज/शाखाएं/2_1_1/pom.xml जेओडी/डैटन्यूक्लियस संघर्ष पहले चरण में दिखाई देने लगते हैं। – rsb

+0

तो, [यह] (http://www.datanucleus.org/products/accessplatform_3_2/datastores/appengine.html) में सही जानकारी है (GAE दस्तावेज़ों से ढूंढना बहुत मुश्किल है): डेटान्यूक्लियस-एपेंगिन 2.1.1 org.datanucleus 3.1 की आवश्यकता है (और प्लगइन को भी मिलान करने की आवश्यकता है)। हालांकि, अब मेरे पास एक अलग बिल्ड त्रुटि है: "कक्षा" XXX "निरंतर नहीं है। इसका मतलब है कि इसे या तो बढ़ाया नहीं गया है, या फ़ाइल का उन्नत संस्करण क्लासस्पैट में नहीं है"। (एमवीएन datanuclues: बढ़िया रन बढ़ता है)। प्रोलिक्स और अब तक अनजान लॉग फ़ाइल के माध्यम से wade करना शुरू कर रहा है ... – rsb

उत्तर

7

मेरे पास अब सबकुछ काम कर रहा है। मैंने सोचा कि मैं कुछ मिलचास साझा करूंगा (क्योंकि मुझे यह सब कुछ हल करने में कई दिन लगे):

1)। सभी संस्करण वास्तव में मायने रखते हैं (एएसपी। ऐप इंजन ओआरएम 2.1.1 से मिलान करने के लिए डेटा न्यूक्लियस 3.1.1 - प्लगइन सहित)।

http://www.datanucleus.org/products/accessplatform_3_2/datastores/appengine.html

यहाँ मैं के साथ समाप्त हो गया है:

<dependency> 
    <groupId>javax.jdo</groupId> 
    <artifactId>jdo-api</artifactId> 
    <version>3.0.1</version> 
    </dependency> 
    <dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-core</artifactId> 
    <version>3.1.1</version> 
    <scope>runtime</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-api-jdo</artifactId> 
    <version>3.1.2</version> 
    </dependency> 
    <dependency> 
    <groupId>com.google.appengine.orm</groupId> 
    <artifactId>datanucleus-appengine</artifactId> 
    <version>2.1.2</version> 
    </dependency> 

    ... 

    <plugin> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>maven-datanucleus-plugin</artifactId> 
    <version>3.1.2</version> 
    <configuration> 
     <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> 
     <verbose>false</verbose> 
     <fork>false</fork> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>process-classes</phase> 
     <goals> 
      <goal>enhance</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

2)। यह सुनिश्चित करने के लिए कि आपकी कक्षाएं बढ़ी हैं (एमवीएन डेटाान्यूक्लियस: एन्हांस्ड) के माध्यम से datanucleus.log की पूंछ की जांच करें। अंत में मुझे एहसास हुआ कि मेरे परीक्षण वर्ग (src/test में) को अनदेखा किया जा रहा था।

+1

http://code.google.com/p/datanucleus-appengine/wiki/Compatibility परिभाषित करता है कि कौन से संस्करणों की आवश्यकता है, Maven pom.xml के संयोजन में विभिन्न प्लगइन्स; यही है कि pom.xml निर्भरता सभी –

+0

@rsb के बाद हैं: आपके परिणामस्वरूप पोम पोस्ट करने के लिए बहुत बहुत धन्यवाद। मैं अंत तक पागल हो रहा था। यह मेरी समस्याओं का हल किया। – m09

0

मैं pom.xml में झूठी जोड़ लिया है और यह काम करता है मुझे

<plugins> 
      <plugin> 
       <groupId>org.datanucleus</groupId> 
       <artifactId>maven-datanucleus-plugin</artifactId> 
       <version>3.1.2</version> 
       <configuration> 
        **<fork>false</fork>** 
        <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> 
        <verbose>true</verbose> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>enhance</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins>