Статус HTTP 500 - поставщик org.glassfish.json.JsonProviderImpl не найден

Я использую netbeans-8, jdk 7,tomcat 8.05. Я создал webapp в netbeans и добавил 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

Ответ 1

Javax.json api (предоставленный в JAON Processing API jar) хорош только для компиляции приложения.

Если вы хотите запустить приложение, вам необходимо загрузить JSON Processing RI jar, как описано здесь: https://jsonp.java.net/download.html

JSON Processing RI jar содержит класс org.glassfish.json.JsonProviderImpl, который вам не хватает.

Ответ 2

Из этого ответа вы можете заменить зависимость javax.json своей реализацией org.glassfish.

Maven repo, дает:

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

Ответ 3

Мне удалось заставить его работать в моем webapp в NetBeans, вручную установив JSON Processing RI jar.

Полная процедура:

  • Загрузите jar: JSON Processing RI jar
  • Щелкните правой кнопкой мыши Project → Dependencies и добавьте новую зависимость, предоставляющую фиктивный идентификатор группы, идентификатор артефакта и номер версии.
  • Щелкните правой кнопкой мыши на вновь созданной зависимости и выберите "Вручную установить артефакт", предоставьте загруженную банку
  • Перестроить проект, теперь он должен работать