java执行出现NoClassDefFoundError

本文探讨了Java中包的概念及其重要性,并详细解释了如何正确地使用javac编译命令及java运行命令来避免NoClassDefFoundError错误。文章还介绍了如何利用-eclipse进行程序调试,以及编译过程中需要注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的这个错误的主要原因是程序中出现了包名引起的,程序如下:

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程序编译时需要格外的小心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值