Java gwt从2.7升级到2.8.1未找到异常DataStoreJDOperationResistenceManagerFactory类

Java gwt从2.7升级到2.8.1未找到异常DataStoreJDOperationResistenceManagerFactory类,java,google-app-engine,gwt,jdo,Java,Google App Engine,Gwt,Jdo,我使用gwt开发应用程序 我尝试从GWT2.7升级到2.8.1,但在创建PersistenceManagerFactory时出现异常 我使用谷歌应用程序引擎1.9.51 这是我创建PersistenceManagerFactory的代码 public final class PMF { private static PersistenceManagerFactory pmfInstance; static { Map<String,String>

我使用gwt开发应用程序 我尝试从GWT2.7升级到2.8.1,但在创建PersistenceManagerFactory时出现异常 我使用谷歌应用程序引擎1.9.51 这是我创建PersistenceManagerFactory的代码

public final class PMF {

    private static PersistenceManagerFactory pmfInstance;

    static {
        Map<String,String> props = new HashMap<>();
        props.put("javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory");
        props.put("javax.jdo.option.ConnectionURL", "appengine");
        props.put("javax.jdo.option.NontransactionalRead", "true");
        props.put("javax.jdo.option.NontransactionalWrite", "true");
        props.put("javax.jdo.option.RetainValues", "true");
        props.put("datanucleus.appengine.autoCreateDatastoreTxns", "true");
        pmfInstance = JDOHelper.getPersistenceManagerFactory(props);
    }
   // private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory( "transactions-optional" ) ;
    private PMF() {
    }

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
}
公共最终类PMF{
私有静态持久化管理器工厂pmfInstance;
静止的{
Map props=newhashmap();
put(“javax.jdo.PersistenceManagerFactoryClass”、“org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory”);
put(“javax.jdo.option.ConnectionURL”、“appengine”);
put(“javax.jdo.option.NontransactionalRead”,“true”);
put(“javax.jdo.option.NontransactionalWrite”,“true”);
put(“javax.jdo.option.retavailues”、“true”);
put(“datanucleus.appengine.autoCreateDatastoreTxns”,“true”);
pmfInstance=JDOHelper.getPersistenceManagerFactory(props);
}
//私有静态最终PersistenceManagerFactory pmfInstance=JDOHelper.getPersistenceManagerFactory(“事务可选”);
私人物业管理基金(){
}
公共静态PersistenceManagerFactory get(){
返回pmfInstance;
}
}
这是我得到的例外

javax.jdo.JDOFatalUserException: Class org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory was not found.|NestedThrowables:|java.lang.ClassNotFoundException: org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory
    at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1175)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
    at com.darimpo.server.persist.PMF.<clinit>(PMF.java:25)
    at com.darimpo.server.managers.BuildingsManager.getBuildingPlaces(BuildingsManager.java:654)
    at com.darimpo.server.servlets.GreetingServiceImpl.pullBuildingPlaces(GreetingServiceImpl.java:378)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
javax.jdo.JDOFatalUserException:未找到类org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory。|嵌套工作流:| java.lang.ClassNotFoundException:org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory
在javax.jdo.JDOHelper.InvokeGetPersistenceManager工厂实现中(JDOHelper.java:1175)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
位于com.darimpo.server.persist.PMF(PMF.java:25)
位于com.darimpo.server.managers.buildingmanager.getBuildingPlaces(buildingmanager.java:654)
位于com.darimpo.server.servlets.GreetingServiceImpl.pullBuildingPlaces(GreetingServiceImpl.java:378)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.google.gwt.user.server.rpc.rpc.invokeAndEncodeResponse(rpc.java:587)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
位于com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
位于org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
位于org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
位于org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
位于org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
位于org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
位于org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
位于org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
位于org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
位于org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
位于org.eclipse.jetty.server.server.handle(server.java:499)
这是我的课程路径

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry including="**/*.java" kind="src" output="target/classes" path="src">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="test">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="com.gwtplugins.gwt.eclipse.core.GWT_CONTAINER"/>
    <classpathentry kind="con" path="com.google.appengine.eclipse.core.GAE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/commons-fileupload-1.3.2.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/commons-io-2.5.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/dropbox-core-sdk-V2.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gagawa-1.0.1.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/GWT FX v0.5.0 MS 1.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gwt-charts-0.9.10.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gwt-visualization.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gwtbootstrap3-0.9.3.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gwtexporter-2.5.0-SNAPSHOT.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/gwtphonegap-3.5.0.1.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/jackson-annotations-2.7.0.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/jackson-core-2.7.0.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/jackson-databind-2.7.0.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/jxl.jar"/>
    <classpathentry kind="lib" path="/Users/gallavie/Documents/workspace/Darimpo/jars/mgwt-2.0.0.jar"/>
    <classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>

我能做些什么来解决这个问题
谢谢

有太多的选项,无法给出简单的答案。您最好的解决方案可能是访问datanucleus网站并按照他们的“入门”说明进行操作。我被纠正了。很抱歉。

也许可以将该类放在类路径中?您能解释更多吗?我编辑并添加我的类路径谢谢ClassNotFoundException?Java在任何JAR中都找不到该类。类是“org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory”。因此,您必须找到它所在的位置,并将该jar放在类路径中。是的,我知道。这个类在google app engine 1.9.51 sdk中,在升级到gwt 2.8.1之前也不例外,这是否意味着我需要将sdk放在类路径中?怎么做?我需要在我的类路径中添加什么才能使其工作?正确的说法是,如果没有更多信息,就不可能给出答案,但他使用的软件不是来自DataNucleus项目,实际上是Google错误地将他们的软件命名为DataNucleus,尽管它只是在较低的级别上使用了其中的一部分