Статус 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 и добавьте новую зависимость, предоставляющую фиктивный идентификатор группы, идентификатор артефакта и номер версии.
- Щелкните правой кнопкой мыши на вновь созданной зависимости и выберите "Вручную установить артефакт", предоставьте загруженную банку
- Перестроить проект, теперь он должен работать