2017-04-26 43 views
0

我已经接管了以下规格的Web应用程序的开发和支持当接收java.lang.IncompatibleClassChangeError:实现JAX-RS服务

  • 的Java SE 1.6
  • 的Tomcat 6
  • 新泽西1.7

编辑 我使用日食和月食与运行项目。不确定这是否有所作为。

编辑 道歉。我使用球衣1.17.1不是泽西1.7

我现在没有使用Maven。新服务我的web.xml条目

<servlet> 
    <servlet-name>RESTService</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>com.gy.restservices</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>RESTService</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 

的应用程序启动后就好了,但是当我提出到服务的调用我收到

org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet RESTService 
java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2946) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1177) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1665) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1544) 
    at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79) 
    at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104) 
    at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78) 
    at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89) 
    at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696) 
    at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674) 
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) 
    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:270) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1213) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:610) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503) 
    at java.lang.Thread.run(Unknown Source) 

我不能肯定,什么是造成这个问题。我看过this SO question,但它涉及到部署到谷歌应用程序引擎。

+0

来自[其docs](https://docs.oracle.com/javase/8/docs/api/java/lang/IncompatibleClassChangeError.html):“当某些类定义发生不兼容的类更改时抛出。目前正在执行的方法所依赖的某个类的定义已经发生了变化。“这可能是由于应用程序中的类不匹配(通过执行干净构建来解决),但也可能是由于服务器组件或第三方库不匹配(通过部署兼容的组件组件来解决)。 –

+0

@JohnBollinger在做了几次彻底的清理,项目构建等后,我仍然收到相同的错误。 –

回答

0

好吧。这一个已经解决了。我从jersey-bundle-1.17.1.jar更改为jersey-bundle-1.19.1.jar,现在我的REST服务正在运行。