我们习惯了在IDE下调试java程序,偶尔需要在控制台下调试时,时常会遇到一些IDE环境下碰不到的问题。
如,在控制台下运行Java程序时,如果class文件不在当前目录下,即使有绝对路径,也会抛出“找不到类定义”异常(java.lang.NoClassDefFoundError)。
例如,你有一个Hello.class文件,它在Test包中。
如果这样运行就会出错:
d:\java\bin>java test\Hello
只有进入到class文件目录下才能执行成功。
d:\java\bin\test>java Hello
这是因为,java程序在执行时,只会在环境变量 $CLASSPATH 下寻找可执行文件 xx.class 。环境变量$CLASSPATH中的点“.”,表示当前目录(类UNIX系统),所以,进入当前目录下执行 java Hello 可以成功,否则,会提示找不到类文件。
怎么办呢?我们总不能把这个目录写到环境变量 $CLASSPATH 中吧!
那么,使用 -classpath 参数指定当前类文件路径即可。
这样运行就可以了:
d:\java\bin>java -classpath test Hello