2013-08-06 67 views
1

我正在嘗試在App Engine中使用Jersey的原型。當我部署我的應用程序{}應用.appspot.com的,我可以看到以下錯誤:在App Engine中啓動錯誤 - Jersey

2013-08-06 08:19:52.749 
com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider, 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.atom.rome.impl.provider.entity.AtomFeedProvider 
    at com.google.appengine.runtime.Request.process-5fd4a6aad8a8feef(Request.java) 
    at java.lang.Class.getDeclaredMethods(Class.java:256) 
    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:435) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:442) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:186) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:306) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:298) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:439) 
    at java.lang.Thread.run(Thread.java:722) 
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:601) 
    ... 41 more 
Caused by: java.lang.NoClassDefFoundError: com/sun/syndication/io/FeedException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2447) 
    ... 41 more 
Caused by: java.lang.ClassNotFoundException: com.sun.syndication.io.FeedException 
    at com.google.appengine.runtime.Request.process-5fd4a6aad8a8feef(Request.java) 
    ... 41 more 

以下是在web.xml中設置

<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.DisableWADL</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.tattva.service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
</servlet-mapping> 

以下罐子是我的建立路徑。

asm-3.1.jar 
    jaxb-api-2.2.4.jar 
    stax-api-1.0-2.jar 
    jackson-core-asl-1.7.1.jar 
    jackson-jaxrs-1.7.1.jar 
    jackson-mapper-asl-1.7.1.jar 
    jackson-xc-1.7.1.jar 
    jettison-1.1.jar 
    activation-1.1.jar 
    jaxb-impl-2.2.4-1.jar 
    jersey-client-1.8.jar 
    jersey-core-1.8.jar 
    jersey-json-1.8.jar 
    jersey-server-1.8.jar 

任何有關哪裏出錯的想法?

回答

0

我一模一樣的錯誤有同樣的問題。我開始與球衣庫打,最後我下載的球衣1.9.1爲zip文件的最後一個版本,jar文件以及: https://jersey.java.net/download.html

現在,在我的項目有: 球衣束-1.19。 1.jar jersey-multipart-1.19.1.jar jersey-atom-abdera-1.19.1.jar

現在沒有啓動錯誤。

0

由於這個問題仍然得到意見3年後,這個錯誤的根源是以下異常:

java.lang.NoClassDefFoundError: com/sun/syndication/io/FeedException 

這是原來所造成的com.sun.syndication.io.FeedException類缺少的依賴,這是一部分RSS和Atom提要的ROME framework。這是澤西島的com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider課程所需要的。

繼從項目頁面Maven的中央鏈接,您可以添加以下依賴於你的項目來解決這個問題:

Maven的:

<dependency> 
    <groupId>com.rometools</groupId> 
    <artifactId>rome</artifactId> 
    <version>1.7.1</version> 
</dependency> 

搖籃:

compile 'com.rometools:rome:1.7.1' 

或簡單地download the JAR directly並將其添加到喲你的項目。