web-dev-qa-db-ja.com

HTTPステータス500-プロバイダーorg.glassfish.json.JsonProviderImplが見つかりません

私は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>
23
Juh_

私は、JSON処理RI jarを手動でインストールすることで、NetBeansのWebアプリケーションでそれを機能させることができました。

完全な手順は次のとおりです。

  • Jarをダウンロードします。 JSON Processing RI jar
  • [プロジェクト]-> [依存関係]を右クリックして、ダミーのグループID、アーティファクトID、およびバージョン番号を提供する新しい依存関係を追加します。
  • 新しく作成した依存関係を右クリックし、[アーティファクトを手動でインストール]を選択して、ダウンロードしたjarを提供します
  • プロジェクトを再構築し、今はうまくいくはずです
5
Marco Mene