2013-02-02 19 views
5

App Engine ve Maven yapılandırması ile JDO kullanarak basit bir test oluşturmaya çalışıyorum.App Engine, JDO ve Maven. Başlangıçta hata

Derleme ve veri geliştirme adımlarım başarılı. Ama zamanında (mvn hem: Test ve appengine: devserver) alıyorum:

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. 

Ancak içermiyor benim sınıf yolu (hedef/demo/WEB-INF/lib): DataNucleus-appengine-2.1.1.jar

Ve bağımlılıkları hakkında DataNucleus projenin POM belirtilen aynıdır:

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

herhangi bir öneri için teşekkür ederiz.

RB

+0

DataNucleus ile JDO sürümü ile bir çakışma olabilir için çalışıyor. datanucleus-core 'i 3.0 – Sabarish

+0

@Sabarish olarak değiştirin, birçok sürüm kombinasyonunu denedim. App Engine ORM projesinde başvurulanlarla başlayan (yani, JDO: 3.0.1, DataNucleus: [3.1.1.3.2), ORM: 2.1.1): https://code.google.com/p/ datanucleus-appengine/source/browse/branches/2_1_1/pom.xml JOD/datanucleus çakışmaları, geliştirme aşamasında daha önce görünmektedir. – rsb

+0

Yani, [this] (http://www.datanucleus.org/products/accessplatform_3_2/datastores/appengine.html) doğru bilgilere sahip (GAE dokümanlarından bulmak çok zor): datanucleus-appengine 2.1.1 org.datanucleus 3.1 gerektirir (ve eklentinin de eşleşmesi gerekir). Ancak, şimdi farklı bir derleme hatası var: "XXX" sınıfı "persistable" değil. Bu, ya geliştirilmediyse veya dosyanın geliştirilmiş sürümünün CLASSPATH'de bulunmadığı anlamına gelir ". (mvn datanuclues: güçlendirmek iyi çalışır). Prolix ve şimdiye dek anlaşılamaz bir günlük dosyası ile başlayıp ... – rsb

cevap

7

Herşeyin şimdi çalışıyor. Bir kaç tuhafı paylaşacağımı düşündüm (bu, tüm bunları ilerletmek için birkaç gün sürdü):

1). Tüm sürümler gerçekten önemli (özellikle de App Engine ORM 2.1.1 ile DataNucleus 3.1.1 - plugin dahil).

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

İşte ben ile sona budur:

<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). Sınıflarınızın geliştirildiğini doğrulamak için datanucleus.log'un kuyruğunu kontrol edin (mvn datanucleus ile: geliştirmek). Sonunda test sınıflarımın (src/test olarak) göz ardı edildiğini anladım.

+1

http://code.google.com/p/datanucleus-appengine/wiki/Compatibility, Maven pom.xml ile birlikte hangi sürümlere ihtiyaç duyulduğunu tanımlar. çeşitli eklentiler; Bu, tüm –

+0

@rsb için pom.xml bağımlılıklarının ne olduğudur: sonuçta ortaya çıkan pompayı yayınladığınız için çok teşekkürler. Sonunda çıldırıyordum. Bu benim problemlerimi çözdü. – m09

0

ben pom.xml'Bu yanlışeklemiş ve bana

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