2015-01-03 13 views
9

Prevedo che non sto usando alcuna dipendenza Maven, tuttavia so che mi manca un file jar wls-api.jar (almeno questo è ciò che ho letto).Websocket Client Impossibile trovare una classe di implementazione

Per risolvere questo problema, ho scaricato il oracle-weblogic-7.9.jar ma il problema persiste.

L'eccezione viene generata in questa linea

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 

Qualcuno può dirmi perché questa linea non riesce continuamente?

AGGIORNAMENTO: dopo aver letto ulteriormente gli esempi che vedere utilizzare questa dipendenza

<dependency> 
<groupId>javax.websocket</groupId> 
<artifactId>javax.websocket-api</artifactId> 
<version>1.0</version> 

ho javax.websocket-api.jar nel percorso di generazione del server e il client in quanto è necessario. Cosa mi manca qui?

Altro aggiornamento: ho dimenticato di includere l'errore lanciato!

Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class. 
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) 
at connect.<init>(connect.java:21) 
at test.main(test.java:11) 
+0

Quale eccezione viene generata dal codice? Il fatto che manchi una dipendenza potrebbe comunque essere un problema. –

+0

Mi dispiace, ho aggiornato la mia domanda per includere ulteriori informazioni oltre all'eccezione generata! –

risposta

17

javax.websocket api è solo la specifica non ha un'implementazione completa potrebbe essere necessario prendere il file jar tyrus-standalone-client-1.9.jar e provare lo stesso esempio che dovrebbe risolvere il problema. ho provato con il mio esempio e funziona bene.

spero che questo ti possa aiutare.

+0

Purtroppo hai ragione, quello che ho finito è stato fare una pagina web che utilizza JavaScript per agire come client. Ho anche un'applicazione per telefono che utilizza l'API Websockets di Autobahn che può essere utilizzata come client. –

1

Credo che il RuntimeException si verificano fortunatamente non è generato da qualsiasi difetto di codifica diretta di tua scelta.

Il metodo getWebSocketContainer(), come descritto here, tenta semplicemente di caricare altre classi e ottenere l'istanza statica di ContainerProvider nel server.

Il metodo sembra per la classe ContainerProvider implementazione nell'ordine elencato nel file META-INF/services/javax.websocket.ContainerProvider, restituendo il WebSocketContainer realizzazione dal ContainerProvider implementazione che non è null.

Questo, purtroppo, significa che il progetto non è configurato correttamente. Doppio controllo per assicurarsi che questo file sia incluso nel percorso di generazione del progetto.

Se altri progetti che stai guardando utilizzano la dipendenza Maven che hai descritto, proverei a impostare il tuo progetto per fare lo stesso.

Spero che questo ha aiutato!

+0

Nel percorso di build ho javax.websocket-api-1.1.jar devo anche metterlo nella cartella lib? Da quello che posso dire questo barattolo contiene ContainerProvider –

+0

Non penso che la cartella lib sia qualcosa di standard, ma provatelo e vediamo se funziona. –

+0

Ho creato qualche altro progetto e ottengo sempre la stessa eccezione –

Problemi correlati