运行java类文件会产生NoClassDefFoundError

时间:2013-11-18 09:37:35

标签: java json classpath gson

我有以下C:\Program Files\Java\jdk1.5.0\com\TestObjectToJson.java文件:

import com.google.gson.*;

public class TestObjectToJson{

  String state = "eBinn3+GQ0lnOjw46K1vsweIqsxAVKSV/QLlKRt6ClqGyBvOUMOHffa2/TogpKE6Qz7gsd7KwHz06XjJar9sjwvoZLizy3AQacDCUyax8uoN79388QTw8LACcjAL00/sZ6AFp45IIuYZ2UXIUovZvjSN55yQc8ev7MrqFLzjiIuuCMLnK8bZwjO9viiji8C+Apnr034UoMklPprTGsbxpvOT97mJCBKXnQ+mBgH3x/2MLA3cfwPQMXZFyA1Hz5597Lx50G0AabMoqeLfddSYgxgbJULLtF2QYAIyG9qijwSktklW5AMY/vSi0FkRU7abayI3v++VYB7Hhc/Zhk3o3V/rdhpc9a9IF4qY28OqQNbFXo9XDpoz15FfKmJrqLMZmJfzrpzZmf5Wze2b6qpMUGtgwRN6WW+o2DCQRmA4EQ5g3zKhV+aTADbulnuVTOxUKYM4+uyPgwCdwwpyvfNk3c9gFeJPZ8ARBcuipbgH+8Om3e1wVz7qm5TxiQTN6tShPMxBFK8MNjqtjKmDKe1qOEttRqnLuRAsFtrASGQ/IO4XdM3574IN2w79cVO6jcpf1Tt2Aw==";

  public static void main(String[] args) {
      TestObjectToJson obj = new TestObjectToJson();
      Gson gson = new Gson();

      //convert java object to JSON format
      String json = gson.toJson(obj);

      System.out.println(json);
  }

}

我已经下载了所需的Gson证书(gson-2.2.4.jar, gson-2.2.4-javadoc.jar, gson-2.2.4-sources.jar)并在

解压缩了它们
  

C:\ Program Files \ Java \ jdk1.5.0 \ com:

我的CLASSPATH设置为:C:\Program Files\Java\jdk1.5.0\com\gson-2.2.4.jar

我在C:\Program Files\Java\jdk1.5.0\com\TestObjectToJson.java的程序使用上面的CLASSPATH进行编译。但是当我尝试跑步时,它会给我:NoClassDefFoundError

如果我将CLASSPATH更改为:C:\Program Files\Java\jdk1.5.0\com\

然后我无法编译程序:它给了我:package com.google.gson does not exist.

我在这里做错了什么?


以下是来自cmd的复制粘贴:

C:\Program Files\Java>cd C:\Program Files\Java\jdk1.5.0\com

C:\Program Files\Java\jdk1.5.0\com>set CLASSPATH=C:\Program Files\Java\jdk1.5.0\
com\gson-2.2.4.jar

C:\Program Files\Java\jdk1.5.0\com>javac -classpath "C:\Program Files\Java\jdk1.5.0
\com\gson-2.2.4.jar"

TestObjectToJson.java

C:\Program Files\Java\jdk1.5.0\com>java -classpath "C:\Program Files\Java\jdk1.5.0
\com\gson-2.2.4.jar" TestObjectToJson

线程“main”中的异常java.lang.NoClassDefFoundError:TestObjectToJson

C:\Program Files\Java\jdk1.5.0\com>echo %CLASSPATH%
C:\Program Files\Java\jdk1.5.0\com\gson-2.2.4.jar

2 个答案:

答案 0 :(得分:0)

您还必须在运行时指定类路径。

java -classpath "C:\Program Files\Java\jdk1.5.0\com\gson-2.2.4.jar" -jar "C:\Program Files\Java\jdk1.5.0\com\TestObjectToJson.java"

答案 1 :(得分:0)

首先,您不必在Program File文件夹中编写代码,这在更新Java时可能会造成麻烦。

要指定类路径,您需要编写如下内容:

  

java -classpath“.; c:\ mylib *”MyApp

所以在你的情况下:

  

javac - classpath“.; com \ gson-2.2.4.jar”com \ TestObjectToJson.java

     

java - classpath“.; com \ gson-2.2.4.jar”com.TestObjectToJson

您需要位于C:\ Program Files \ Java \ jdk1.5.0 \才能运行此命令。

但请记住,不建议使用此位置。

要获取有关java中claspath的更多信息: PATH and CLASSPATH

或者:How To Set The Classpath

最后,恕我直言,使用Eclipse或Netbeans使依赖性问题变得更加容易。

更新后修改:

  

C:\ Program Files \ Java> cd C:\ Program Files \ Java \ jdk1.5.0

     

C:\ Program Files \ Java \ jdk1.5.0> javac -classpath“C:\ Program Files \ Java \ jdk1.5.0 \ com \ gson-2.2.4.jar”com \ TestObjectToJson.java

     

C:\ Program Files \ Java \ jdk1.5.0> java -classpath“C:\ Program Files \ Java \ jdk1.5 .0 \ com \ gson-2.2.4.jar”com.TestObjectToJson