David Prun David Prun - 1 year ago 72
Java Question

Able to compile but unable to run Java from cmd with jar files

I have a java file which uses jfreechart libraries, uses a text file from local drive and displays graph. Runs fine with eclipse. However, I want to run this from cmd prompt, other simple Java files are able to run successfully via cmd prmnt but not able to run this file.
PS: MyTool.java is able to compile without errors and class file is created, but not able to run.

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.
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
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.

What I don't understand is, if there are any errors, then it should not compile in first place, can someone educate me. Thank you very much.

Answer Source

You need to include "." in the classpath, like so:

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"