我正在运行Java REST Web服务Google AppEngine。它在我的本地Google Plugin for Eclipse开发服务器上运行良好。但是,在将其部署到AppEngine Cloud后,我收到以下错误,每4毫秒重复记录一次:
com.sun.jersey.core.spi.component.ProviderFactory __getComponentProvider: The provider class, class com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General, could not be instantiated. Processing will continue but the class will not be utilized
这与以下问题相同:
Jersey error on Google App Engine
然而,解决方案到达那里并不适合我。解决方案是“添加jackson * .jar libs,问题就消失了。”我确实将所有的Jackson罐子添加为$ ECLIPSE_PROJECT_HOME / war / WEB-INF / lib / jackson-all-1.9.7.jar,但我仍然得到错误。我理解问题的本质(杰克逊没有被Jersey检测为提供者),但我觉得这个错误只在部署后才发生,而不是在开发中。
也许我会尝试新的2.0.0系列杰克逊......
我是否需要将指向Jackson的任何内容添加到我的$ ECLIPSE_PROJECT_HOME / war / WEB-INF / web.xml文件中?现在,我有:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
<servlet-name>jerseywebapp</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.pathways.openciss.rest.impl</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.classnames</param-name>
<param-value>org.codehaus.jackson.jaxrs.JacksonJsonProvider</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jerseywebapp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>OpenCISS.html</welcome-file>
</welcome-file-list>
</web-app>
我已经尝试过,有没有POJOMappingFeature和JacksonJsonProvider参数打开和关闭,无济于事......
提前感谢任何建议。
答案 0 :(得分:4)
解决。我使用的杰克逊图书馆没有与泽西捆绑在一起。我删除了杰克逊的图书馆,刚安装了包含杰克逊的泽西档案:
...链接网站:
http://jersey.java.net/nonav/documentation/latest/chapter_deps.html
泽西档案(目前为1.12)效果很好。一旦我在其/lib
文件夹中添加了所有的罐子,错误消失了,正如另一张海报所见。我不理解的是,应该使用仅泽西岛档案,而不是来自泽西岛和杰克逊网站的混合罐,因为泽西档案包含杰克逊罐子。