Stworzyłem spokojną fasadę usługową opartą na jerseyu 1.12 na serwerze http JDK 1.6. Kiedy zaczynam swoją aplikację w Zaćmienie wszystko działa dobrze. Mogę komunikować się z fasadą bez żadnych problemów, ale kiedy uruchamiam aplikację za pomocą konsoli przy użyciu skryptu startowego, mam dostęp do usługi IncompatibleClassChangeError.Niezawodny serwis komunikacyjny dla firmy Jersey (IncompatibleClassChangeError)
Udało mi się zawęzić problem. Problem polega na wysłaniu odpowiedzi. Ponieważ mogę normalnie komunikować się z usługą (żądanie jest przetwarzane), ale nie otrzymuję odpowiedzi. Czy masz jakieś wskazówki na ten temat?
skrypt startowy
#!/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
różnicą, że zostanie wyrzucony
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
Część mojego elewacji
@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;
}
Application Handler
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;
}
}
Edit: classpath
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
Wygląda na problem z klasą ścieżek. Czy możesz opublikować użytą ścieżkę klas? – andih
Dodałem ścieżkę klas. –
Zwykle Eclipse działa z inną wersją klasy lub wersją JVM. – Viruzzo