我的这个错误的主要原因是程序中出现了包名引起的,程序如下:
package ImputationRareProb;
public class ImputationRareProb {
public static void main(String[] args)
{
System.out.println(args[0]);
}
}
注意程序顶层的package,如果按照如下的方式运行,则会出现这样错误
如果按照下面的方式来运行,则会出现NoClassRareProb的错误,但是如果用eclipse运行则不会出错,之所以这样是因为eclipse帮我们做了很多事情。
javac ImputationRareProb.java
//到此没有任何错误,成功通过,然后试着去运行生成的.class文件就会出现NoClassDefFoundError
java ImputationRareProb
//到这里就会报错了。
之所以这样是因为“包的存在”
包的意义在于产生一种目录结构,所以class文件必须位于相应的目录层次结构中,所以正确的做法应该是这样的
javac -d . ImputationRareProb.java
-d选项是是指定生成class文件的目录,这里截个图看下这样生成的class文件的目录结构
第二个是上面的文件夹内的内容,然后执行的时候也应该是ImputationRareProb.java所在的目录执行
java ImputationRareProb/ImputationRareProb
才行,否则也会有同样的错误。所以对于涉及到包的java程序编译时需要格外的小心。