在CSDN论坛里, 经常碰见有人问JDK的路径设置问题, 这里系统讲一下, 希望对新手有些帮助经常有人问: "我用javac编译过了, 为什么用java执行的时候出现 java.lang.NoClassDefFoundError ?"
这就是环境变量设置的问题.首先先澄清一个概念, java.exe接受的参数是类名, 而不是文件名, 我见过有人用 "java Hello.class" 来执行程序, 当然会出错.那么, java是如何知道在哪里加载类呢?
这就是CLASSPATH环境变量的作用了, java会搜索CLASSPATH变量以及 -cp 和 -classpath 参数制定的所有目录(包括.jar和.zip文件中的目录), 找到对应的类. 每次指定 -cp 参数是很麻烦的, 因此一般设定CLASSPATH 环境变量.在 Windows 2000 / XP / .Net Server 中, 进入"系统属性--高级--环境变量", 新建环境变量名为CLASSPATH, 值为 ".;C:\JDK1.5\lib\dt.jar;C:\JDK1.5\jre\lib\rt.jar"
其中, "." 代表当前目录, rt.jar是最基本的Java运行库, dt.jar是辅助开发工具库另外, 为了使用方便, 还可以在PATH变量中加入 C:\JDK1.5\bin, 这样运行javac.exe 和 java.exe 就不用加上完整的路径名了.这里C:\JDK1.5是我的JDK路径, 请更改为你自己对应的路径. 而且, 一般我们会添加一个JAVA_HOME变量, 设置为JDK路径, 因为 Tomcat, Ant 等不少 Apache 项目都会要求此变量.在安装了ant等Java工具, 库等后, 一般按照说明在CLASSPATH中加入对应的运行库以方便运行
最后还有一个小问题, 关于含有包的类的调用, 应在包的顶目录调用java, 而不是具体类的目录.
比如 C:\test\com\softboys\HelloWorld.class 这个类, 应该在C:\test下调用 "java com.softboys.HelloWorld" 而 不是在 C:\test\com\softboys\ 调用"java HelloWorld" .希望这个贴子对大家有所帮助.

解决方案 »

  1.   

    问题依旧~~~
    java.lang.NoClassDefFoundError: java/math/BigDecimal
    at ptc.Arith.mul(+0)
    at ptc.Welcome.commandAction(+116)
    at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
    at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
    at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
    at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)
    Execution completed.