首页 > 解决方案 > 遇到 JSONreader ClassNotFoundException 尽管将它包含在类路径中

问题描述

我正在尝试弄清楚如何使用 JSONreader 包,我已经下载了 gson-2.8.6.jar 文件并正在使用以下命令:javac -classpath gson-2.8.6.jar Dummy.java

此命令工作正常,但是当我在其中执行带有 JSONreader 的文件时,出现此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/stream/JsonReader
        at Dummy.main(Dummy.java:14)
Caused by: java.lang.ClassNotFoundException: com.google.gson.stream.JsonReader
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

我的 Dummy.java 看起来像这样:

import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;

import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;

public class Dummy {
    public static void main(String[] args){
        String json = "{\"brand\" : \"Toyota\", \"doors\" : 5}";

        JsonReader jsonReader = new JsonReader(new StringReader(json));
        try {
            while(jsonReader.hasNext()){
                JsonToken nextToken = jsonReader.peek();
                System.out.println(nextToken);
        
                if(JsonToken.BEGIN_OBJECT.equals(nextToken)){
        
                    jsonReader.beginObject();
        
                } else if(JsonToken.NAME.equals(nextToken)){
        
                    String name  =  jsonReader.nextName();
                    System.out.println(name);
        
                } else if(JsonToken.STRING.equals(nextToken)){
        
                    String value =  jsonReader.nextString();
                    System.out.println(value);
        
                } else if(JsonToken.NUMBER.equals(nextToken)){
        
                    long value =  jsonReader.nextLong();
                    System.out.println(value);
        
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
      System.out.println("This is my first program in java");
      System.out.println("Successful compilation");
    }//End of main
  }//End of FirstJavaProgram Classjav

我能得到一些关于为什么会发生这种情况的指示吗?我正在使用“java Dummy”运行。如果这是模糊的让我知道,我可以进一步详细说明,我似乎无法理解为什么它说 noClassDefFound 尽管 JsonReader 是 gson-2.8.6.jar 文件中的一个有效包,如所示:https ://javadoc.io/ doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/stream/JsonReader.html

标签: javajsongsonjsonreader

解决方案


推荐阅读