能够编译但无法使用jar文件从cmd运行Java

时间:2011-09-15 00:03:26

标签: java exception exception-handling jar jfreechart

我有一个使用jfreechart库的java文件,使用本地驱动器中的文本文件并显示图形。用日食运行很好。但是,我想从cmd提示符运行它,其他简单的Java文件能够通过cmd prmnt成功运行但无法运行此文件。 PS:MyTool.java能够无错误地编译并创建类文件,但无法运行。


 1) This is how I am compiling it in cmd prompt: (gives 0 errors)

C:\Documents and Settings\hello.maga\workspace\MyTool\lib>javac -cp "gnujaxp.
jar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-e
xperimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar" MyTool.java

  2) This is how I am running it:


 C:\Documents and Settings\hello.maga\workspace\MyTool\lib>java -cp "gnujaxp.j
 ar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-ex
 perimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar" MyTool


    Error for second command: 

    Exception in thread "main" java.lang.NoClassDefFoundError: MyTool
    Caused by: java.lang.ClassNotFoundException: MyTool
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    Could not find the main class: MyTool.  Program will exit.

我不明白的是,如果有任何错误,那么它不应该首先编译,有人可以教育我。非常感谢你。

2 个答案:

答案 0 :(得分:2)

您需要包含“。”在类路径中,如下所示:

java -cp ".;gnujaxp.jar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-experimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar"

答案 1 :(得分:0)

From“Setting the class path”:“类路径告诉SDK工具和应用程序在哪里可以找到第三方和用户定义的类 - 即不是Java扩展或Java平台的一部分的类。类路径需要找到你用javac编译器编译的任何类 - 它的默认值是当前目录,可以方便地找到这些类。“

但是,如果您自己设置类路径,则默认不再适用,并且您希望它从当前目录加载类。您必须手动添加它,例如添加“。”以Ed Staub推荐的课程路径。

编译时,类路径上不需要你的类,可以这么说,因为它是编译的。您只需要类路径上的所有其他类(在jar文件中)。这就是为什么你能够编译但不能运行,即使你为这两个操作使用了相同的类路径。