A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾公亮 黑马帝   /  2011-10-3 16:59  /  2460 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果在一个文件中写入了包名,在DOS命令下编译能成功,运行时却总是报错:java.lang.NoClassDefFoundError
这时该怎么写java命令呢?
比如一个Test类,里面有包:package cn.itcast.base(属于这个包)
搞了半天,没搞也来,特来请教!!
[ 本帖最后由 曾公亮 于 2011-10-03  18:57 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

7 个回复

倒序浏览
黑马网友  发表于 2011-10-3 17:28:09
沙发
检查运行时是否带了java后缀, 文件名大小写错误、classpath的配置。
回复 使用道具 举报
黑马网友  发表于 2011-10-3 17:55:46
藤椅
[img]http://b93.photo.store.qq.com/psb?/5b205669-fff2-43c6-9efe-27ee832744e1/.lVYMc5kr4bzEmo5XxvzuA6poKaYCCwb48vztnYjEaU!/b/YYzlejfVMgAAYss5cDf4MgAA[/img]

[img]http://b93.photo.store.qq.com/psb?/5b205669-fff2-43c6-9efe-27ee832744e1/cEt3iwdxymLOkDNtH4fBvQNMM0HB*cI74VK5TyqCH8M!/b/YY83cDdcMwAAYq8JgTfQMgAA[/img]

以上内容是有一个类Test(package cn.itcast.base;),运行时输出test这个词,该类存放在java文件夹下,在java目录下创建一个文件夹cn.itcast.base,然后将在dos命令下生成的.class文件移动到文件夹cn.itcast.base下再运行即可成功!
回复 使用道具 举报
本帖最后由 曾公亮 于 2011-10-6 23:18 编辑

还是不行啊
回复 使用道具 举报
黑马网友  发表于 2011-10-3 20:00:58
报纸
如果你是按我写的步骤执行还是不行的话,那就是你的classpath的设置问题了!
回复 使用道具 举报
黑马网友  发表于 2011-10-3 20:34:06
地板
可以了,每一级建一个文件夹,运行时还得把包名带上,java cn.itcast.base.Test
多谢开导!!!

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 就是这样!

查看全部评分

回复 使用道具 举报
成杰 黑马帝 2011-10-6 14:57:38
7#
当打包后,在DOC下面编译或者运行时,记得要把包名带上   javac  java cn.itcast.base.Test.java   和  java    java cn.itcast.base.Test
这样编译才行,不然,打包后,找不到相应的类名,就会出现上述的 java.lang.NoClassDefFoundError 的错误!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
陈晓东 黑马帝 2011-10-8 00:47:19
8#
javac -d . Test.java
java cn.itcast.base.Test
如此而已 之所以找不到类 是因为你编译的时候没让包自动生成一层层文件夹
所以你运行的时候当然不会找到class文件了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马