2012-06-21 12 views
7

Я использую Google App Engine (appengine-java-sdk-1.6.6) для приложения, использующего JDO и maven (maven-gae-plugin) для проекта структуры и построения. Сборка улучшается вместе с улучшением моих классов домена с помощью DataNucleus Enhancer.Класс org.datanucleus.api.jdo.PersistenceManagerFactoryClass не найден

При запуске приложения я столкнулся с этой проблемой: Класс org.datanucleus.api.jdo.PersistenceManagerFactoryClass не найден. Может ли кто-нибудь проконсультироваться. Спасибо

PS: Я сделал grep (на linux), чтобы найти PersistenceManagerFactoryClass в папке SDK Engine APK, я не смог его найти.

Could not instantiate bean class [com.peerbuccoss.apps.mtp.dao.impl.CommonDaoImpl]: Constructor threw exception; nested exception is javax.jdo.JDOFatalUserException: Class  org.datanucleus.api.jdo.PersistenceManagerFactoryClass was not found. 
NestedThrowables: 
java.lang.ClassNotFoundException:  org.datanucleus.api.jdo.PersistenceManagerFactoryClass: 
java.lang.ClassNotFoundException: org.datanucleus.api.jdo.PersistenceManagerFactoryClass 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:264) 
at javax.jdo.JDOHelper$18.run(JDOHelper.java:2018) 
at javax.jdo.JDOHelper$18.run(JDOHelper.java:2017) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.jdo.JDOHelper.forName(JDOHelper.java:2015) 
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1162) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1093) 
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:919) 
+1

У меня изменить свойство javax.jdo.PersistenceManagerFactoryClass с value org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory, и он отлично работает. –

+0

Итак, вы используете v1 плагина GAE JDO. Очевидно, что это древние, поэтому, скорее всего, ударит проблемы позже. Лучше использовать v2 этого плагина – DataNucleus

+0

@DataNucleus Спасибо за ваш ответ. Я перешел с v1 на v2 и использовал конфигурацию из Google (https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2#Creating_the_jdoconfig_xml_File), у меня такая же проблема «Class org. datanucleus.api.jdo.PersistenceManagerFactoryClass не найден ». –

ответ

3

В моем случае я использовал DataNucleus-appengine- 2.1.2 вместо DataNucleus-appengine- 1.0.10. Начиная с версии 2.1.2 необходимо обновить jdconfig.xml со следующими PersistenceManagerFactoryClass:

<property name="javax.jdo.PersistenceManagerFactoryClass" 
     value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/> 

Мой jdconfig.xml является:

<?xml version="1.0" encoding="utf-8"?> 
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> 

    <persistence-manager-factory name="transactions-optional"> 
     <property name="javax.jdo.PersistenceManagerFactoryClass" 
      value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/> 
     <property name="javax.jdo.option.ConnectionURL" value="appengine"/> 
     <property name="javax.jdo.option.NontransactionalRead" value="true"/> 
     <property name="javax.jdo.option.NontransactionalWrite" value="true"/> 
     <property name="javax.jdo.option.RetainValues" value="true"/> 
     <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> 
     <property name="datanucleus.appengine.singletonPMFForName" value="true"/> 
    </persistence-manager-factory> 
</jdoconfig> 
Смежные вопросы