注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

笑遍世界@网易博客

明天还会在路上……

 
 
 

日志

 
 
关于我

Stay hungry, stay foolish. 工作用脑,生活用心! 走过山重水复,必然迎来柳暗花明! 受苦的人没有悲观的权利,远征的人没有流泪的资格。 Live each day as if we should die tomorrow.

网易考拉推荐
 
 

“Exception in thread "main" java.lang.NoClassDefFoundError”及其背后的故事  

2010-02-06 01:01:20|  分类: 软件使用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
起因是看到ThreadDump,后来Google了一下,发现Windows命令行下Ctrl+Break可以实现,所以将Eclipse中的一个Java程序编译,然后到命令行下运行java ThreadDump (编译后的class为TheadDump.class),然后奇怪的事情发生了,“Exception   in   thread   "main"   java.lang.NoClassDefFoundError”这个exception就出现了。本来我在Eclipse中这个小程序,是可以运行啊;为啥用javac编译后,用java运行就报错了。
我只能Google一下了,找了N多资料都是说环境变量(classpath)设置问题,后来我将程序中的package包名去掉然后再javac、java就可以,发现原来原因是我在.java源代码中写了package ren.yong.jie问题。还真没想到,是因为包名引起的问题,运行java命令时是有所不同的。
现在总结一下,先是应该看CLASSPATH/PATH等环境变量有没有配好,然后再看java类中的包名。

安装JDK后环境变量配置(本文针对Windows,Linux下也是类似的建立这几个变量并export):
参考:http://developer.51cto.com/art/200907/134496.htm
          http://topic.csdn.net/t/20030106/10/1330248.html
我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
1.变量名:path 
   变量值:C:\jdk1.6.0\bin;
2.变量名:JAVA_HOME
   变量值:C:\jdk1.6.0
3.变量名:classpath 
变量值:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib \dt.jar;(注意,CLASSPATH最前面是有个“.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找Class文件了。)

类中带有包名的问题,在命令行下运行。
       1.当类没有包时 dos下
       javac Test.java       //编译Test类,生产class文件
       java Test             //运行Test类
       2.当有包名情况下  com.application.Test
       javac -d . Test.java    //可以生成包的class文件,也就是像开发工具中生成的文件夹
       java com.application.Test  //运行这个类
在你包名的最开始处开始运行java 包名.类名,命令比如你project目录下你的存放class文件,假设你的class文件是com.xx.my.class,这样在project目录下肯定有 com/xx/my这样的包结构,因为你的CLASSPATH有.这个路径,现在应该到project目录下运行java 包名.类名命令 如果你直接去projrct/com/xx/my目录下就会出现你上面的错误了,因为你告诉虚拟机是从当前路径下找类,而当前文件夹下是没有com/xx /my这个目录的!!



  评论这张
 
阅读(1504)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017