私はnetbeans-8, jdk 7,Tomcat 8.05.
を使用していますnetbeans
でWebアプリケーションを作成し、javax.json
apiをプロジェクトに追加したところ、コードにエラーは表示されませんが、サーブレットを実行すると以下のエラーが発生します。
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
Javax.json api(JSON処理API jarで提供)は、アプリケーションのコンパイルにのみ適しています。
アプリケーションを実行する場合は、ここで説明されているように JSON Processing RI jar をダウンロードする必要があります。 https://jsonp.Java.net/download.html
JSON処理RI jarには、不足しているorg.glassfish.json.JsonProviderImplクラスが含まれています。
この答え から、javax.json依存関係をそのorg.glassfish実装で置き換えることができます。
Maven repo 、次のようになります:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
私は、JSON処理RI jarを手動でインストールすることで、NetBeansのWebアプリケーションでそれを機能させることができました。
完全な手順は次のとおりです。