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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客 中级黑马   /  2012-5-22 22:51  /  2986 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果在一个文件中写入了包名,在DOS命令下编译能成功,运行时却总是报错:java.lang.NoClassDefFoundError
这时该怎么写java命令呢?
比如一个Test类,里面有包:package cn.itcast(属于这个包)
搞了半天,没搞也来,特来请教!!

6 个回复

正序浏览
和我们在电脑上访问一个文件夹下的文件一样,不到指定的文件夹下拿不到想要的文件。同理包和类的关系也是如此,你把一个类声明在一个包中你就只能从这个包里找到类。java.lang.NoClassDefFoundError没有找到类的引用错误。
回复 使用道具 举报
没有导包{:soso_e100:}
回复 使用道具 举报
我是一般这样做的把一个java文件复制到c:盘根目录下 然后用记事本打开 删除最顶端上面那一行 比如 package cn.itcast.day1;删掉它
就可以正常编译运行了 希望帮到你
我觉得别的那些方法感觉比较繁琐
回复 使用道具 举报
是这样的,我给你解释一下,你编译成功了以后,因为你程序里写了包名,所以你没法直接执行这个java程序,你需要按照包的路径建立相应的文件夹目录,按照你说的,你要先建立一个cn文件夹,它里面有一个itcast文件夹,把你的Test.class文件放到itcast文件中去,然后你再dos命令窗口输入.class 文件名的全路径运行:java cn.itcast.Test就可以了
这样做是很麻烦的,所以编译的时候我们一般用javac提供的参数编译:javac -d . Test.java这样它自动就给你把包目录建立好了,不过你如果要在dos命令窗口执行还是需要使用java cn.itcast.Test把全路径写进去,这就是为什么后期老师让我们用IDE了,因为你光干这个事情就累死了,有人会帮我们做,我的重点是在写程序上,不是弄层级目录的,呵呵,希望对你有帮助
回复 使用道具 举报

.

本帖最后由 尹丽峰 于 2012-5-22 23:46 编辑

javac  -d . Test.java  注意那个“.”
回复 使用道具 举报
有包的话  你就要把你的JAVA文件放到cn/itcast目录下  然后cmd也要弄到这个目录下执行  如果前期实验代码 可以把包去了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马