5

AppEngineとMaven構成でJDOを使用して簡単なテストを作成しようとしています。

コンパイルとデータ拡張の手順は成功しました。しかし、実行時に(mvn:testと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.

ただし、私のクラスパス(target / demo / WEB-INF / lib)には次のものが含まれています:datanucleus-appengine-2.1.1.jar

そして、私の依存関係は、GoogledatanucleusプロジェクトのPOMで指定されているものと同じです。

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

提案に感謝します。

RB

4

2 に答える 2

7

私は今すべてが働いています。いくつかの落とし穴を共有したいと思いました (これらすべてを掘り下げるのに数日かかったので)。

1)。すべてのバージョンは本当に重要です (特に、App Engine ORM 2.1.1 を DataNucleus 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 の末尾をチェックして、(mvn datanucleus:enhance を介して) クラスが強化されたことを確認します。最終的に、テスト クラス (src/test 内) が無視されていることに気付きました。

于 2013-02-02T21:26:00.317 に答える
0

pom.xmlにfalseを追加しましたが、うまくいきます

<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>
于 2014-07-10T06:08:08.523 に答える