Google app engine 谷歌应用程序引擎上的Jersey 1.17

Google app engine 谷歌应用程序引擎上的Jersey 1.17,google-app-engine,rest,jersey,Google App Engine,Rest,Jersey,我在Google App Engine上部署了REST服务,每次尝试查询该服务时都会收到以下错误: com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider, could not be instantiated. Processin

我在Google App Engine上部署了REST服务,每次尝试查询该服务时都会收到以下错误:

com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider, could not be instantiated. Processing will continue but the class will not be utilized
java.lang.SecurityException: Unable to get members for class com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider
    at com.google.appengine.runtime.Request.process-7d6711107bb7eaaa(Request.java)
    at java.lang.Class.getDeclaredMethods(Class.java:253)
    at com.sun.jersey.core.reflection.MethodList.getAllDeclaredMethods(MethodList.java:70)
    at com.sun.jersey.core.reflection.MethodList.<init>(MethodList.java:64)
    at com.sun.jersey.core.spi.component.ComponentConstructor.getPostConstructMethods(ComponentConstructor.java:131)
    at com.sun.jersey.core.spi.component.ComponentConstructor.<init>(ComponentConstructor.java:123)
    at com.sun.jersey.core.spi.component.ProviderFactory.__getComponentProvider(ProviderFactory.java:165)
    at com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:137)
    at com.sun.jersey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:256)
    at com.sun.jersey.core.spi.component.ProviderServices.getServices(ProviderServices.java:160)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1310)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770)
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765)
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489)
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461)
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:703)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    ... 41 more
Caused by: java.lang.NoClassDefFoundError: javax/mail/MessagingException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
    ... 41 more
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
    at com.google.appengine.runtime.Request.process-7d6711107bb7eaaa(Request.java)
    ... 41 more
com.sun.jersey.core.spi.component.ProviderFactory\uu getComponentProvider:无法实例化提供程序类com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider。处理将继续,但不会使用该类
java.lang.SecurityException:无法获取com.sun.jersey.core.impl.provider.entity.MimemMultipartProvider类的成员
位于com.google.appengine.runtime.Request.process-7D671107BB7EAAA(Request.java)
位于java.lang.Class.getDeclaredMethods(Class.java:253)
位于com.sun.jersey.core.reflection.MethodList.getAllDeclaredMethods(MethodList.java:70)
位于com.sun.jersey.core.reflection.MethodList.(MethodList.java:64)
位于com.sun.jersey.core.spi.component.ComponentConstructor.getPostConstructMethods(ComponentConstructor.java:131)
com.sun.jersey.core.spi.component.ComponentConstructor.(ComponentConstructor.java:123)
位于com.sun.jersey.core.spi.component.ProviderFactory.\uu getComponentProvider(ProviderFactory.java:165)
位于com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:137)
位于com.sun.jersey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:256)
位于com.sun.jersey.core.spi.component.ProviderServices.getServices(ProviderServices.java:160)
位于com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176)
位于com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
在com.sun.jersey.server.impl.application.WebApplicationImpl.\u启动(WebApplicationImpl.java:1310)
com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774)
位于com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770)
位于com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
在com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)上
位于com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765)
位于com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489)
位于com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)
位于com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
位于com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
位于com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
位于com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
位于javax.servlet.GenericServlet.init(GenericServlet.java:212)
位于org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
位于org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
位于org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
位于org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454)
在com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461)
位于com.google.tracing.TraceContext.runInContext(TraceContext.java:703)
在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContextNonRef(TraceContext.java:338)
在com.google.tracing.TraceContext$AbstractTraceContextCallback.RunInheritedContext(TraceContext.java:330)上
位于com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458)
运行(Thread.java:679)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.GeneratedMethodAccessor9.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
... 41多
原因:java.lang.NoClassDefFoundError:javax/mail/MessaginException
位于java.lang.Class.getDeclaredMethods0(本机方法)
位于java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
... 41多
原因:java.lang.ClassNotFoundException:javax.mail.MessaginException
位于com.google.appengine.runtime.Request.process-7D671107BB7EAAA(Request.java)
... 41多

此服务不使用或发送任何邮件。它所做的唯一一件事就是从某个POJO编写JSON响应。当然,它在本地工作(在本地GAE和本地Tomcat上)。

这可能是版本的兼容性问题。据介绍,与Google App Engine兼容的Jersey版本为1.5和1.1.5

我也有类似的问题,我不喜欢这个版本的兼容性问题,所以我选择:

  • 要从GAE提供RESTWeb服务,请使用,这仍然是一项实验性技术,但就我所尝试的而言,它工作得相当好。此外,它与GAE和

  • 为了从GAE中使用REST服务,我选择只使用HTTP客户机库中的Java构建,如前所述。我不知道这是否是最好的方法,但它非常简单,可以避免GAE和外部API(如Jersey)之间可能出现的兼容性问题


这可能是版本的兼容性问题。据J