2011-08-03 43 views
0

我正在尝试使用datanucleus作为GAE的JPA提供程序。这是我pom.xml(一部分):DataNucleus 3.0.0-release需要哪些依赖项?

<dependency> 
    <groupId>org.apache.geronimo.specs</groupId> 
    <artifactId>geronimo-jpa_2.0_spec</artifactId> 
    <version>1.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.geronimo.specs</groupId> 
    <artifactId>geronimo-jta_1.1_spec</artifactId> 
    <version>1.1.1</version> 
</dependency> 
<dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-api-jpa</artifactId> 
    <version>3.0.0-release</version> 
</dependency> 
<dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-core</artifactId> 
    <version>3.0.0-release</version> 
</dependency> 
<dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-rdbms</artifactId> 
    <version>3.0.0-release</version> 
</dependency> 
<dependency> 
    <groupId>com.google.appengine.orm</groupId> 
    <artifactId>datanucleus-appengine</artifactId> 
    <version>1.0.8</version> 
</dependency> 

类发现异常在运行时抛出:

java.lang.NoClassDefFoundError: org/datanucleus/jpa/exceptions/NoPersistenceXmlException 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
at java.lang.Class.getConstructor0(Class.java:2699) 
at java.lang.Class.newInstance0(Class.java:326) 
at java.lang.Class.newInstance(Class.java:308) 
at org.apache.geronimo.osgi.locator.ProviderLocator.getServices(ProviderLocator.java:319) 
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:108) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72) 
... 

如果这org.datanucleus.jpa.exceptions.NoPersistenceXmlException类所在?我错过了什么JAR?

+0

你是指它从哪里引用?从你没有从CLASSPATH中删除的DataNucleus 1.x jar文件 – DataNucleus

+0

实际上,在你的类路径中,你有一个“com.google.appengine.orm”v1.0.8,Google的文档非常清楚地陈述了它将与DataNucleus 1 .x ...这是它支持的所有。 GAE/J SVN的代码可以与DataNucleus 3.x一起使用 – DataNucleus

回答

0

你需要

<dependency> 
    <groupId>org.datanucleus</groupId> 
    <artifactId>datanucleus-jpa</artifactId> 
    <version>2.1.8</version> 
</dependency> 

Source

另外,还要注意它有
Geronimo的jpa_2.0_spec
DataNucleus将核心
Geronimo的validation_1.0_spec

+1

不,你不知道。那是DataNucleus 2.x – DataNucleus

+0

好吧,我可能是错的。但是请提供正确的解决方案给提出问题的人。 – cheekoo

0

这是它是如何工作的(它是datanucleus 1.x,它是GAE的最高版本):

<dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-jpa_3.0_spec</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-jpa</artifactId> 
     <version>1.1.5</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>1.1.5</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>1.1.5</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.jdo</groupId> 
     <artifactId>jdo-api</artifactId> 
     <version>3.0</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.appengine.orm</groupId> 
     <artifactId>datanucleus-appengine</artifactId> 
     <version>1.0.8</version> 
     <scope>runtime</scope> 
    </dependency> 
1

Official Link For Maven

将提供所需的信息。如果没有,请在此处提及@DataNucleus可以在此类事件中更新网站。

相关问题