2017-09-19 10 views
0

Je suis en train de créer un nouveau WebSocketClient sans constructeur args pour cometd:ServiceConfigurationError jeté en essayant de créer une nouvelle jetée WebSocketClient exemple

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; 
} 

Mais jette exception d'exécution:

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) 

Cette se passe sur Android

minSdkVersion 21 
targetSdkVersion 25 

Et j'ai inclus e bibliothèque comme ceci:

//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' 

Savez-vous ce qui ne va pas et comment puis-je résoudre ce problème?

--------------- modifier

----------------

ce fut aussi dans le stacktrace:

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

Apparaît juste un pot manquant. Êtes-vous sûr que le fichier contenant 'org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension' est disponible dans votre environnement Android? Quelle version exacte de Jetty utilisez-vous? – sbordet

+0

Je suis d'accord. Je ne sais pas réellement. Je pensais que Gradle télécharge toutes les dépendances nécessaires. Le référentiel maven que j'utilise https://mvnrepository.com/artifact/org.cometd.java/cometd-java-websocket-jetty-client/3.1.2 dit que la version de Jetty est 9.2.22.v20170606 –

Répondre

1

Comme sbordet mentionné dans les commentaires, le problème était avec les dépendances manquantes. L'ajout de ce à build.gradle résolu le problème:

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

(en utilisant ancienne version car ne pas Java 8 disponibles)

Je ne sais pas pourquoi il est pas résolu automatiquement si.