我正在使用netbeans-8, jdk 7,tomcat 8.05.
我在netbeans
中创建了一个webapp并在我的项目中添加了javax.json
api,代码显示没有错误,但是当我运行我的servlet时,会发生以下错误。
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
答案 0 :(得分:24)
javax.json api(在JSON Processing API jar中提供)仅适用于编译应用程序。
如果您要运行该应用程序,则必须下载JSON Processing RI jar,如下所述:https://jsonp.java.net/download.html
JSON Processing RI jar包含您缺少的org.glassfish.json.JsonProviderImpl类。
答案 1 :(得分:23)
从this answer开始,您可以通过其org.glassfish实现替换javax.json依赖项。
Maven repo,给出:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
答案 2 :(得分:5)
我设法通过手动安装JSON Processing RI jar使其在NetBeans中的webapp中运行。
完整的程序是: