2012-12-15 90 views
0

我一直在努力配置谷歌应用程序引擎(gae)+ Jersey + Maven。 我正在使用gae sdk 1.7.2,datanucleus-appengine 2.0.0.1和JDO 3.0。GAE上的Datanucleus错误,同时使用JDO持久化对象

我能够获得PersistenceManagerFactory,但makePersistent时我得到以下错误。

DataNucleus增强器(版本3.0.1):使用API​​“JDO”的ClassEnhancer“ASM”。

java.lang.NoSuchMethodError: org.datanucleus.metadata.AbstractMemberMetaData.getTypeConverterName()Ljava/lang/String; 
    at com.google.appengine.datanucleus.StoreFieldManager.storeFieldInEntity(StoreFieldManager.java:255) 
    at com.google.appengine.datanucleus.StoreFieldManager.storeStringField(StoreFieldManager.java:175) 
    at org.datanucleus.state.AbstractStateManager.providedStringField(AbstractStateManager.java:1438) 
org.datanucleus.state.AbstractStateManager.provideFields(AbstractStateManager.java:1520) 
     at com.google.appengine.datanucleus.DatastorePersistenceHandler.insertObjectsInternal(DatastorePersistenceHandler.java:243) 
     at com.google.appengine.datanucleus.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:220) 
     at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManagerImpl.java:2444) 
     at org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.java:2420) 
     at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:1808) 
     at org.datanucleus.ObjectManagerImpl.persistObjectWork(ObjectManagerImpl.java:1657) 
     at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:1522) 
     at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:743) 
     at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:768) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:115) 
     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$VoidOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:167) 
     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
     at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:110) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
     at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:380) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at org.mortbay.jetty.Server.handle(Server.java:326) 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
    16 Dec, 2012 3:01:06 AM com.google.apphosting.utils.jetty.JettyLogger warn 

以下是我试图坚持类:

@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class User implements Serializable{ 

    private static final long serialVersionUID = 1L; 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Long id; 
    @Persistent 
    private String Name; 

    public User(){ 

    } 

    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 
    public String getName() { 
     return Name; 
    } 
    public void setName(String name) { 
     Name = name; 
    } 
} 

是否有任何人知道什么可能会导致错误?持久班有什么问题吗?

回答

1

您认为NoSuchMethodError是什么意思?看看它的javadoc。某些方法有望在某些类中被调用(即它被调用并且它不存在,所以你已经搞乱了正在使用的(datanucleus-XXX)jar的版本)GAE JDO 3.0需要DataNucleus v3.0(并且没有v3。 1)你还在使用一些v3.1 jar

+0

谢谢你的回答,我确实尝试过维护相同版本的JDO和datanucleus,但是它没有工作,我认为问题出在gae-runtime插件上,我我使用的是运行appengine gae-runtime依赖jdo2-api和datanucleus-appengine v1这个插件的开发者可能需要升级它才能使用V2。 – Arpit

相关问题