Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey restful服务通信(不兼容ClassChangeError)_Java_Rest_Jersey_Simplehttpserver - Fatal编程技术网

Java Jersey restful服务通信(不兼容ClassChangeError)

Java Jersey restful服务通信(不兼容ClassChangeError),java,rest,jersey,simplehttpserver,Java,Rest,Jersey,Simplehttpserver,我在JDK1.6HTTP服务器上基于jersey 1.12创建了一个restful服务外观。当我在eclipse中启动应用程序时,一切正常。我可以毫无困难地与facade通信,但是当我使用启动脚本通过控制台启动应用程序时,在访问服务时,我遇到了一个不兼容的ClassChangeError 我能够缩小这个问题的范围。问题在于发送响应。因为我可以正常地与服务通信(请求已被处理),但我没有得到响应。你对此有什么线索吗 启动脚本 #!/usr/bin/env bash libpath= for i in

我在JDK1.6HTTP服务器上基于jersey 1.12创建了一个restful服务外观。当我在eclipse中启动应用程序时,一切正常。我可以毫无困难地与facade通信,但是当我使用启动脚本通过控制台启动应用程序时,在访问服务时,我遇到了一个不兼容的ClassChangeError

我能够缩小这个问题的范围。问题在于发送响应。因为我可以正常地与服务通信(请求已被处理),但我没有得到响应。你对此有什么线索吗

启动脚本

#!/usr/bin/env bash
libpath=
for i in $(ls lib/*|grep ".jar"); do 
    libpath=$( echo "$i:$libpath"); 
done
java -cp "$(echo $libpath)build/jar/myjar.jar" org.....Startup
将引发的异常

WARNUNG: Class org....facade.ServiceFacadeImpl is ignored as an instance is registered in the set of singletons
Call getMutationList: NP_005378
Exception in thread "pool-1-thread-1" java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType
我外表的一部分

@GET
@Path("/mutations/{id}/{from}/{size}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public MutationPosContainer getMutationList(@PathParam("id") String id,
        @PathParam("from") Integer from, @PathParam("size") Integer size) {
    ...
    if (posContainer == null)
        throw new BadRequestException();
    else
        return posContainer;
}
应用程序处理程序

public class SnapDbApplication extends Application {
  private ServiceFacade facade;

  public SnapDbApplication(ServiceFacade facade) {
      this.facade = facade;
  }

  @Override
  public Set<Class<?>> getClasses() {
      Set<Class<?>> s = new HashSet<Class<?>>();
      s.add(this.facade.getClass());
      return s;
  }


  @Override
  public Set<Object> getSingletons() {
      Set<Object> s = new HashSet<Object>();
      s.add(this.facade);
      return s;
  } 
}

您的类路径中可能有一个不兼容的jsr311版本(请参阅)。删除它,它就会正常运行。

似乎是类路径问题。您可以发布所使用的类路径吗?Eclipse显然使用不同的类路径或JVM版本运行。有没有办法从eclipse中查看applicationin启动命令?
java -cp 
lib/xstream-1.4.2.jar:lib/xmlbeans-2.3.0.jar:lib/xml-resolver-1.2.jar:lib/xalan-2.7.0.jar:
lib/wstx-asl-3.2.9.jar:lib/wsdl4j-1.6.2.jar:lib/woden-impl-dom-1.0M9.jar:lib/woden-impl-commons-1.0M9.jar:
lib/woden-api-1.0M9.jar:lib/tribes-6.0.16.jar:lib/snpxsd.jar:
lib/regexp-1.2.jar:lib/org.springframework.web.struts-sources-3.1.1.RELEASE.jar:
lib/org.springframework.web.struts-3.1.1.RELEASE.jar:
lib/org.springframework.web.servlet-sources-3.1.1.RELEASE.jar:
lib/org.springframework.web.servlet-3.1.1.RELEASE.jar:
...
:lib/jersey-server-1.12.jar:lib/jersey-multipart-1.12.jar:lib/jersey-json-1.12.jar:
lib/jersey-core-1.12.jar:lib/jersey-client-1.12.jar:lib/jaxws-tools-2.1.3.jar:lib/jaxen-1.1.1.jar:lib/jaxb-xjc-2.1.7.jar:
lib/jaxb-impl-2.1.7.jar:lib/jaxb-api-2.1.jar:
lib/jalopy-1.5rc3.jar:lib/httpcore-4.0.jar:
lib/http-20070405.jar:lib/hamcrest-library-1:build/jar/myapp.jar
org.startup.Startup