本文介绍了在javax.json.spi.JsonProvider.provider(JsonProvider.java:97)上找不到提供者org.glassfish.json.JsonProviderImpl的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Eclipse中运行Java API进行JSON处理(JSR 374)?

我正在尝试将JSON字符串解析为JsonParser(javax.json.stream.JsonParser )。还在构建路径中添加了javax.json-api-1.0.jar。在运行时,有一个例外。
我的代码是

How to run Java API for JSON Processing(JSR 374) in eclipse?

I am trying to parse JSON string to JsonParser(javax.json.stream.JsonParser). Also added javax.json-api-1.0.jar in the build path. At runtime, there is an exception.My code is

import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonReader;
import javax.json.JsonStructure;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParser.Event;
import javax.json.JsonReader;
import javax.json.JsonStructure;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParser.Event;
public class jsonnn {
public class jsonnn {
public static void main(String[] args) {
        // Parse back
        final String result = "{\"name\":\"Falco\",\"age\":3,\"bitable\":false}";
        final JsonParser parser = Json.createParser(new StringReader(result));
        String key = null;
        String value = null;
        while (parser.hasNext()) {
            final Event event = parser.next();
            switch (event) {
            case KEY_NAME:
                key = parser.getString();
                System.out.println(key);
                break;
            case VALUE_STRING:
                value = parser.getString();
                System.out.println(value);
                break;
            }
        }
        parser.close();
    }
}

例外是

Exception in thread "main" javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
at javax.json.spi.JsonProvider.provider(JsonProvider.java:97)
at javax.json.Json.createParser(Json.java:90)
at jsonnn.main(jsonnn.java:14)
Caused by: java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at javax.json.spi.JsonProvider.provider(JsonProvider.java:94)
... 2 more


推荐答案

您正在针对API进行开发,并且没有针对该API的实现。您需要确保已实现JSON-P规范,才能实际运行您要使用的代码。

You're developing against an API and have no implementation for that API. You need to make sure you have an implementation of the JSON-P specification to actually run the code you're trying to use.

在,它表明您需要两个 Maven依赖项-一个用于API,一个用于参考实现-在可以使用JSON-P 1.1之前:

In the JSR 374 official website Getting Started guide, it shows that you need two Maven dependencies - one for the API and one for the reference implementation - before you can use JSON-P 1.1:

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>

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

由于您似乎未使用Maven,因此需要从Maven下载实现JAR手动中央:

Since it looks like you're not using Maven, you will need to download the implementation JAR from Maven Central manually:https://repo1.maven.org/maven2/org/glassfish/javax.json/1.1/

或只需单击此直接链接即可下载JAR:

Or just click this direct link to download the JAR: javax.json-1.1.jar

这篇关于在javax.json.spi.JsonProvider.provider(JsonProvider.java:97)上找不到提供者org.glassfish.json.JsonProviderImpl的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 02:30