我相信很多好奇的java初学者在学习时很可能会遇到这个问题:为什么Eclipse编译生成的class文件通过java命令行调用时总出现Exception in thread "main" java.lang.NoClassDefFoundError:的问题,那为什么eclipse可以运行呢??
我也没能幸免,经过一系列折腾后终于找到了解决问题的方法(也伴随着百度了一堆不着边际的解释,这个问题主要在于同一个问题却并不是由相同的原因导致,搜索不是智能的,所以发帖子的话最好写明问题以及问题导致的出错描述)
问题描述:
1.多半eclipse中的java文件都是在一定的包里面的,如果一开始用写字板等编辑软件编写的helloworld程序,并通过java命令行编译并执行,不会有问题,有问题的话那说明你没有在classpath环境变量最前面加上.;该项配置
2.如果你用写字板创建的java文件含有了包信息,你也通过javac编译该java文件成功了,但是当满怀欣喜通过java命令调用生成的含有main方法的class文件时却出现了以下异常信息:Exception in thread "main" java.lang.NoClassDefFoundError: hello (wrong name: net/csdn/my/hello)
导致这个问题产生的原因不是网上所说的一些classpath没有配置对导致的(误人不浅啊,浪费我不少时间),而是因为你调用java命令所在目录导致的, 如果使用写字板编辑的java文件,应该新建net/csdn/my这个子目录,然后将javac生成的class文件复制到net/csdn/my目录下,然后通过java net.csdn.my.hello调用即可成功(hello为我自己创建的类名称)