Какие зависимости требуются для выпуска DataNucleus 3.0.0?

Я пытаюсь использовать datanucleus в качестве поставщика JPA для GAE. Это мой pom.xml (его часть):

<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 я пропустил?


person yegor256    schedule 03.08.2011    source источник
comment
Вы имеете в виду, откуда это упоминается? Из jar-файла DataNucleus 1.x, который вы не удалили из CLASSPATH   -  person DataNucleus    schedule 04.08.2011
comment
На самом деле, глядя на ваш путь к классам, у вас есть com.google.appengine.orm v1.0.8, который, как указано в документах Google, должен использоваться с DataNucleus 1.x ... потому что это все, что он поддерживает. В GAE/J SVN есть код, который будет работать с DataNucleus 3.x.   -  person DataNucleus    schedule 04.08.2011


Ответы (3)


Официальная ссылка для Maven

предоставит необходимую информацию. Если нет, укажите здесь, поскольку @DataNucleus может обновить веб-сайт в таком случае.

person Ravindranath Akila    schedule 16.11.2012

Тебе нужно

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

Источник

Также обратите внимание, что он имеет
geronimo-jpa_2.0_spec
datanucleus-core
geronimo-validation_1.0_spec

person cheekoo    schedule 03.08.2011
comment
Нет, не знаешь. Это DataNucleus 2.x - person DataNucleus; 04.08.2011
comment
Хорошо, я могу ошибаться. Но, пожалуйста, предоставьте правильное решение человеку, который задал вопрос. - person cheekoo; 04.08.2011

Вот как это работает (это 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>
person yegor256    schedule 05.08.2011