2014-04-02 8 views
12

Sto usando netbeans-8, jdk 7,tomcat 8.05. ho creato una webapp in netbeans e ha aggiunto javax.json API per il mio progetto, il codice mostra nessun errore, ma quando ho eseguito il mio servlet l'errore sotto si verifica.HTTP Stato 500 - Provider non org.glassfish.json.JsonProviderImpl trovato

HTTP Status 500 - Provider org.glassfish.json.JsonProviderImpl not found 

type Exception report 

message Provider org.glassfish.json.JsonProviderImpl not found 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found 
    javax.json.spi.JsonProvider.provider(JsonProvider.java:97) 
    javax.json.Json.createObjectBuilder(Json.java:266) 
    NewServlet.doGet(NewServlet.java:24) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 
root cause 

java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1132) 
    java.lang.Class.forName0(Native Method) 
    java.lang.Class.forName(Class.java:190) 
    javax.json.spi.JsonProvider.provider(JsonProvider.java:94) 
    javax.json.Json.createObjectBuilder(Json.java:266) 
    NewServlet.doGet(NewServlet.java:24) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.3 logs. 

Apache Tomcat/8.0.3 

risposta

23

L'api javax.json (fornito nel vaso API JSON Processing) è buono solo per compilare l'applicazione.

Se si desidera eseguire l'applicazione, è necessario scaricare il JSON Processing RI jar, come spiegato qui: https://jsonp.java.net/download.html

Il vaso JSON Processing RI contiene la classe org.glassfish.json.JsonProviderImpl ti stai perdendo.

5

Sono riuscito a farlo funzionare nella mia webapp in NetBeans installando manualmente il jar RI JSON Processing.

La procedura completa è:

  • Scarica il vaso: JSON Processing RI jar
  • pulsante destro del mouse su Project -> Dipendenze e aggiungere nuova dipendenza fornendo fittizio ID gruppo, ID Artefatto e il numero di versione.
  • destro del mouse sulla dipendenza appena creato e selezionare "Installare manualmente artefatto", fornire il barattolo scaricato
  • Ricostruire progetto, ora dovrebbe funzionare
+0

Questa era l'unica cosa che ha funzionato per me. – Bimde

14

Da this answer si potrebbe sostituire la dipendenza dal suo javax.json implementazione di org.glassfish.

Maven repo, dà:

<dependency> 
    <groupId>org.glassfish</groupId> 
    <artifactId>javax.json</artifactId> 
    <version>1.0.4</version> 
</dependency> 
+2

Dopo aver aggiunto questo alla lista delle dipendenze, non usare (( –