2017-09-19 7 views
0

만들려고 할 때 발생 것은, ServiceConfigurationError :새로운 부두 WebSocketClient 인스턴스에게 내가 cometD 없음 인수 생성자로 새로운 <code>WebSocketClient</code> 만들려고하고

static BayeuxClient newInstace(String url) throws Exception { 
    WebSocketClient wsClient = new WebSocketClient(); //exception here!! 
    wsClient.start(); 
    Map<String, Object> options = new HashMap<>(); 
    ClientTransport transport = new JettyWebSocketTransport(options, Executors.newScheduledThreadPool(2), wsClient); 
    BayeuxClient client = new BayeuxClient(url, transport); 
    return client; 
} 

을하지만이 던지고 런타임 예외 :

java.util.ServiceConfigurationError: org.eclipse.jetty.websocket.api.extensions.Extension: Provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension not found 
    at java.util.ServiceLoader.fail(ServiceLoader.java:225) 
    at java.util.ServiceLoader.-wrap1(ServiceLoader.java) 
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:366) 
    at java.util.ServiceLoader$1.next(ServiceLoader.java:448) 
    at org.eclipse.jetty.websocket.api.extensions.ExtensionFactory.<init>(ExtensionFactory.java:35) 
    at org.eclipse.jetty.websocket.client.common.extensions.WebSocketExtensionFactory.<init>(WebSocketExtensionFactory.java:36) 
    at org.eclipse.jetty.websocket.client.WebSocketClient.<init>(WebSocketClient.java:117) 
    at org.eclipse.jetty.websocket.client.WebSocketClient.<init>(WebSocketClient.java:108) 
    at org.eclipse.jetty.websocket.client.WebSocketClient.<init>(WebSocketClient.java:88) 
    at org.asd.util.customerSupportChat.LekaneClient.newInstace(LekaneClient.java:40) 

이를 Android에서 발생합니다.

minSdkVersion 21 
targetSdkVersion 25 

전자 라이브러리는 다음과 같습니다.

//https://mvnrepository.com/artifact/org.cometd.java/cometd-java-websocket-jetty-client/3.1.2 
compile group: 'org.cometd.java', name: 'cometd-java-websocket-jetty-client', version: '3.1.2' 

무엇이 잘못되었는지 그리고 어떻게 해결할 수 있습니까?

:

--------------- 편집 ----------------

이 스택 트레이스도했다

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension" on path: DexPathList[[zip file "/data/app/org.asd.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/org.asd.debug-2/lib/x86, /system/lib, /vendor/lib]] 
+1

누락 된 병 모양입니다. Android 환경에서'org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension'을 포함하는 jar 파일을 사용할 수 있습니까? 정확한 제티 버전을 사용하고 있습니까? – sbordet

+0

동의합니다. 나는 사실을 모른다. 나는 gradle이 필요한 모든 의존성을 다운로드한다고 생각했다. maven 저장소 (https://mvnrepository.com/artifact/org.cometd.java/cometd-java-websocket-jetty-client/3.1.2)는 Jetty 버전이 9.2.22.v20170606이라고 말합니다. –

답변

1

의견에 sbordet이 언급했듯이 문제는 종속성 누락과 함께 발생했습니다.

compile group: 'org.eclipse.jetty.websocket', name: 'websocket-common', version: '9.2.22.v20170606' 

가 있지만 자동으로 해결되지 않는 이유

알고하지 마십시오 (사용 가능한 자바 (8)이 없기 때문에 이전 버전을 사용) : build.gradle이 추가 문제를 해결했습니다.