2012-04-16 12 views
5

JDK 1.6のhttpサーバー上のJersey 1.12に基づいて快適なサービス・ファサードを作成しました。 Eclipseでアプリケーションを起動すると、すべて正常に動作します。私は問題なくファサードと通信することができますが、スタートアップスクリプトでコンソールからアプリケーションを起動すると、サービスにアクセスするとIncompatibleClassChangeErrorが発生します。ジャージ・リーズナブル・サービス通信(IncompatibleClassChangeError)

問題を絞り込むことができました。問題は、応答を送信することです。私はサービスと正常に通信することができるので(要求は処理されます)、私は応答を得ません。これについて何か手がかりはありますか?

起動スクリプト

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 

をスローされます

#!/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 

例外私のファサードの一部

@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の互換性のないバージョンを持っている

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 
+0

クラスパスの問題と思われます。使用したクラスパスを投稿できますか? – andih

+0

私はクラスパスを追加しました。 –

+0

Eclipseは明らかに異なるクラスパスまたはJVMバージョンで動作します。興味深いもの: – Viruzzo

答えて

8

1を参照してください)。それを削除すると正常に動作するはずです。

+0

そのトリックをした –

関連する問題