JDK路径设置全解 遇到过 java.lang.NoClassDefFoundError 的Java新手请进

softboysxp 2006-04-02 03:38:36
在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" .



希望这个贴子对大家有所帮助.
...全文
8603 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiwen5668 2010-06-13
  • 打赏
  • 举报
回复
问题依旧~~~
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.
hook_177 2006-04-19
  • 打赏
  • 举报
回复
谢谢了,太好了,我捣动2小时没搞定,哈,你几句话的事
xcrow713 2006-04-03
  • 打赏
  • 举报
回复
非常有用,谢谢楼主,支持

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧