Google app engine 找不到GAE/JDO-JDOperateResistenceManagerFactory

Google app engine 找不到GAE/JDO-JDOperateResistenceManagerFactory,google-app-engine,maven,jdo,Google App Engine,Maven,Jdo,首先,这是我第一次来这里,我来自巴西,我想提前感谢所有能帮助我的人。此外,这是我第一次使用GAE,我非常喜欢这项服务。我已经与GAE合作了一段时间,我使用GAE非常成功 我正在尝试在GAE中进行持久化,错误是: javax.jdo.JDOFatalUserException:类org.datanucleus.api.jdo 未找到.jDoperResistenceManagerFactory 我的追踪器: [INFO] set 07, 2014 12:03:28 PM com.googl

首先,这是我第一次来这里,我来自巴西,我想提前感谢所有能帮助我的人。此外,这是我第一次使用GAE,我非常喜欢这项服务。我已经与GAE合作了一段时间,我使用GAE非常成功

我正在尝试在GAE中进行持久化,错误是:

javax.jdo.JDOFatalUserException:类org.datanucleus.api.jdo 未找到.jDoperResistenceManagerFactory

我的追踪器:

    [INFO] set 07, 2014 12:03:28 PM com.google.api.server.spi.SystemServiceServlet i
nit
[INFO] INFORMAÇÕES: SPI restricted: true
[INFO] set 07, 2014 12:03:34 PM com.google.api.server.spi.SystemService invokeSe
rviceMethod
[INFO] INFORMAÇÕES: cause={0}
[INFO] java.lang.ExceptionInInitializerError
[INFO]  at com.ufscar.Greetings.listGreeting(Greetings.java:47)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
[INFO]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
[INFO]  at java.lang.reflect.Method.invoke(Method.java:483)
[INFO]  at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemSer
vice.java:359)
[INFO]  at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceS
ervlet.java:160)
[INFO]  at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceSe
rvlet.java:118)
[INFO]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
[INFO]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
[INFO]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511
)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1166)
[INFO]  at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocke
tFilter.java:74)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.ResponseRewriterFilter.doFilte
r(ResponseRewriterFilter.java:127)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFil
ter(HeaderVerificationFilter.java:34)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(Serve
BlobFilter.java:63)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(Stat
icFileFilter.java:125)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doDi
rectRequest(DevAppServerModulesFilter.java:366)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doDi
rectModuleRequest(DevAppServerModulesFilter.java:349)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doFi
lter(DevAppServerModulesFilter.java:116)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
88)
[INFO]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
[INFO]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
82)
[INFO]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
65)
[INFO]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)

[INFO]  at com.google.appengine.tools.development.DevAppEngineWebAppContext.hand
le(DevAppEngineWebAppContext.java:98)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
[INFO]  at com.google.appengine.tools.development.JettyContainerService$ApiProxy
Handler.handle(JettyContainerService.java:491)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
[INFO]  at org.mortbay.jetty.Server.handle(Server.java:326)
[INFO]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:54
2)
[INFO]  at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio
n.java:938)
[INFO]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[INFO]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[INFO]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[INFO]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
va:409)
[INFO]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
ava:582)
[INFO] Caused by: javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo
.JDOPersistenceManagerFactory was not found.
[INFO] NestedThrowables:
[INFO] java.lang.ClassNotFoundException: org.datanucleus.api.jdo.JDOPersistenceM
anagerFactory
[INFO]  at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio
n(JDOHelper.java:1175)
[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1093)

[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:919)
[INFO]  at com.ufscar.PMF.<clinit>(PMF.java:8)
[INFO]  ... 45 more
[INFO] Caused by: java.lang.ClassNotFoundException: org.datanucleus.api.jdo.JDOP
ersistenceManagerFactory
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[INFO]  at com.google.appengine.tools.development.IsolatedAppClassLoader.loadCla
ss(IsolatedAppClassLoader.java:216)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[INFO]  at java.lang.Class.forName0(Native Method)
[INFO]  at java.lang.Class.forName(Class.java:340)
[INFO]  at javax.jdo.JDOHelper$18.run(JDOHelper.java:2018)
[INFO]  at javax.jdo.JDOHelper$18.run(JDOHelper.java:2016)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at javax.jdo.JDOHelper.forName(JDOHelper.java:2015)
[INFO]  at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio
n(JDOHelper.java:1162)
[INFO]  ... 49 more
[INFO]
[INFO] set 07, 2014 12:03:34 PM com.google.api.server.spi.SystemService invokeSe
rviceMethod
[INFO] GRAVE: null
[INFO] java.lang.ExceptionInInitializerError
[INFO]  at com.ufscar.Greetings.listGreeting(Greetings.java:47)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
[INFO]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
[INFO]  at java.lang.reflect.Method.invoke(Method.java:483)
[INFO]  at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemSer
vice.java:359)
[INFO]  at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceS
ervlet.java:160)
[INFO]  at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceSe
rvlet.java:118)
[INFO]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
[INFO]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
[INFO]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511
)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1166)
[INFO]  at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocke
tFilter.java:74)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.ResponseRewriterFilter.doFilte
r(ResponseRewriterFilter.java:127)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFil
ter(HeaderVerificationFilter.java:34)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(Serve
BlobFilter.java:63)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(Stat
icFileFilter.java:125)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doDi
rectRequest(DevAppServerModulesFilter.java:366)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doDi
rectModuleRequest(DevAppServerModulesFilter.java:349)
[INFO]  at com.google.appengine.tools.development.DevAppServerModulesFilter.doFi
lter(DevAppServerModulesFilter.java:116)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
[INFO]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
88)
[INFO]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
[INFO]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
82)
[INFO]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
65)
[INFO]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)

[INFO]  at com.google.appengine.tools.development.DevAppEngineWebAppContext.hand
le(DevAppEngineWebAppContext.java:98)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
[INFO]  at com.google.appengine.tools.development.JettyContainerService$ApiProxy
Handler.handle(JettyContainerService.java:491)
[INFO]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
[INFO]  at org.mortbay.jetty.Server.handle(Server.java:326)
[INFO]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:54
2)
[INFO]  at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio
n.java:938)
[INFO]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[INFO]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[INFO]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[INFO]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
va:409)
[INFO]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
ava:582)
[INFO] Caused by: javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo
.JDOPersistenceManagerFactory was not found.
[INFO] NestedThrowables:
[INFO] java.lang.ClassNotFoundException: org.datanucleus.api.jdo.JDOPersistenceM
anagerFactory
[INFO]  at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio
n(JDOHelper.java:1175)
[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1093)

[INFO]  at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:919)
[INFO]  at com.ufscar.PMF.<clinit>(PMF.java:8)
[INFO]  ... 45 more
[INFO] Caused by: java.lang.ClassNotFoundException: org.datanucleus.api.jdo.JDOP
ersistenceManagerFactory
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[INFO]  at com.google.appengine.tools.development.IsolatedAppClassLoader.loadCla
ss(IsolatedAppClassLoader.java:216)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[INFO]  at java.lang.Class.forName0(Native Method)
[INFO]  at java.lang.Class.forName(Class.java:340)
[INFO]  at javax.jdo.JDOHelper$18.run(JDOHelper.java:2018)
[INFO]  at javax.jdo.JDOHelper$18.run(JDOHelper.java:2016)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at javax.jdo.JDOHelper.forName(JDOHelper.java:2015)
[INFO]  at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementatio
n(JDOHelper.java:1162)
[INFO]  ... 49 more
[INFO]
我使用的是Maven,他在META-INF中提供了一个persistence.xml文件,但我创建了一个jdoconfig:

<?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.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
       <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"/>
   </persistence-manager-factory>
</jdoconfig>

pom.xml:

http://maven.apache.org/xsd/maven-4.0.0.xsd“>

4.0.0
战争
1.0-快照
com.ufscar
变矩器离合器
1.
UTF-8
3.1.0
com.google.appengine
appengine-api-1.0-sdk
1.9.10
com.google.appengine
appengine端点
1.9.10
javax.servlet
servlet api
2.5
假如
javax.inject
javax.inject
1.
javax.jdo
jdoapi
3.0.1
朱尼特
朱尼特
4.11
测试
org.mockito
莫基托所有
1.9.5
测试
com.google.appengine
阿彭金试验
1.9.10
测试
com.google.appengine
appengine api存根
1.9.10
测试
${project.build.directory}/${project.build.finalName}/WEB-INF/classes
org.codehaus.mojo
版本maven插件
2.1
编译
显示依赖项更新
显示插件更新
org.apache.maven.plugins
3.1
maven编译器插件
1.7
1.7
org.apache.maven.plugins
maven战争插件
2.4
${project.build.directory}/generated sources/appengine endpoints/WEB-INF/WEB.xml
${project.build.directory}/generated sources/appengine endpoints
WEB-INF/*.discovery
WEB-INF/*.api
com.google.appengine
appengine maven插件
1.9.10
假的
端点\u获取\u发现\u文档
org.eclipse.m2e
生命周期映射
1.0.0
org.apache.maven.plugins
maven战争插件
2.1.1
爆炸了的
org.datanucleus
maven datanucleus插件
1.1.4
增强


某人?

如果您坚持使用您需要的

org.datanucleus : datanucleus-core, datanucleus-api-jdo v3.1.x
com.google.appengine.orm : datanucleus-appengine v2.1.x

增强时添加到datanucleus enhancer v3.1.x(除非通过maven插件完成)

我在Eclipse中通过输入project properties-Google-App Engine并将datanucleus JDO/JPA版本从unspecified切换到2来克服这个错误(跟踪转储顶部的错误是java.lang.ExceptionInInitializerError,如果这很重要的话)

如果有点晚了,很抱歉,但我已经在一些项目中使用了GAE,并且每次都会遇到此错误,因为文档中很容易遗漏此错误

在应用程序
war/WEB-INF/classes/META-INF/
目录中,创建一个名为
jdoconfig.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>

`

这将指定名为“transactions optional”的JDOperationResistenceManagerFactory实例

在谷歌文档中-

您发布的内容中没有NoClassDefFoundError。这是由以下原因引起的:javax.jdo.JDOFatalUserException:必须指定名为javax.jdo.Pe RSistenceManager FactoryClass的属性,或者必须在类路径中指定名为javax.jdo.option.PersistenceManager Factory项的jar文件,或者指定名为javax.jdo.option.PersistenceUnitNam的属性必须指定e。那么为什么不遵循消息?或者也许你只是不发布重要信息?嗨,比利,谢谢你的关注,我对此感到非常困惑,对不起。好吧,我今天开始了另一个项目。现在我发现了一个错误org.datanucleus.api.jdo.jdopersistencemanagerfactory没有找到我编辑了thacer和pom.xml。可以吗你又看到了吗?
org.datanucleus : datanucleus-core, datanucleus-api-jdo v3.1.x
com.google.appengine.orm : datanucleus-appengine v2.1.x
<?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>