Tôi đã tạo một mặt tiền dịch vụ an toàn dựa trên jersey 1.12 trên máy chủ http JDK 1.6. Khi tôi bắt đầu ứng dụng của tôi trong tất cả mọi thứ eclipse hoạt động tốt. Tôi có thể giao tiếp với mặt tiền mà không gặp bất kỳ rắc rối nào nhưng khi tôi khởi động ứng dụng của mình thông qua bàn điều khiển với tập lệnh khởi động của tôi, tôi nhận được một IncompatibleClassChangeError khi tôi truy cập dịch vụ.Giao tiếp dịch vụ an toàn của Jersey (IncompatibleClassChangeError)
Tôi đã có thể thu hẹp sự cố. Vấn đề là gửi phản hồi. Bởi vì tôi có thể giao tiếp với dịch vụ thông thường (yêu cầu được xử lý) nhưng tôi không nhận được phản hồi. Bạn có bất kỳ đầu mối về điều này?
khởi động kịch bản
#!/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
ngoại lệ sẽ được ném
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
Một phần của mặt tiền của tôi
@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;
}
}
.210
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
Dường như là sự cố classpath. Bạn có thể đăng classpath được sử dụng không? – andih
Tôi đã thêm đường dẫn lớp. –
Eclipse dường như chạy với một classpath khác hoặc phiên bản JVM. – Viruzzo