2011-09-15 73 views
0

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


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

您需要包含“。”在classpath中,像这样:

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" 
0

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

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

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