Exception in thread "main" java.lang.NoClassDefFoundError 问题及其解决方法

Preface

在浏览本文之前,请保证已经安装好JDK, JRE,并且对如何设置classpath有基本认识。

Environment

OS: Windows XP

Java Development Kit: 1.6.0_06

Java Runtime Environemt: 6

Introduction

本文主要讲述在CMD上run Java program 时可能遇到的 Exception in thread "main" java.lang.NoClassDefFoundError 问题以及解决方法。

 

Section 1 - Problem:

如果利用CMD去run Java program,往往会遇到 Exception in thread "main" java.lang.NoClassDefFoundError 的问题。

Section 2 - Reason:

其实原因有多种,在本文中可能无法涵盖所有引致这个问题原因,只是列出最为常见的动因。首先可能是你的program在run的时候需要特定的jar包,例如jdom.jar这一类,而你却没有把它们的所在地址放到classpath里面;其次可能是涉及到具有package结构的class文件,通常在exception中带有wrong name提示。

Section 3 - Solution:

(1) 对于jar包问题,首先要将你的program用到的jar包的目录地址输入到classpath里面。例如我有个一个JDOM的jar包在D:/JavaLibraries/jdom-1.1/build/jdom.jar,则我需要在classpath内已有内容的分号后加入"D:/JavaLibraries/jdom-1.1/build/jdom.jar;"(引号以内)的这串字符,当然这是针对一般已经对classpath设置过其他内容的做法;如果你是新建立的classpath或者内面完全没有值,你则需要在基于以上的字符串前头再加多".;",即".,D:/JavaLibraries/jdom-1.1/build/jdom.jar;"。

(2) 对于package结构问题,你需要在classpath中设置一下你package所在的目录地址,并且在CMD上输入带有package名的command。例如我在develop program的时候,我将Rd.java和RdService.java定义在rd这个package下(在实际的文件系统中,你会看到那两个java文件就在在rd这个folder之下),当我同样在D:/program/rd这个folder下编译生成Rd.class和RdService.class(它会被Rd.class调用),我现在打算run Rd.class这个文件,则需要将"D:/program;"加入到classpath,然后在CMD上输入"java rd.Rd",这样就能够是program run起来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Exception in thread "main" java.lang.NoClassDefFoundError: concept/person (wrong name: concept/Person)是由于类名与方法名的大小写问题导致的。在Windows系统中,编译器在编译过程中不严格区分大小写,因此只编译出了一个类person,并生成了class person。而在代码中,却使用了类名Person来创建对象,导致找不到或无法加载主类concept.Person,从而出现错误提示。\[1\] 在Linux中调用执行jar包时,由于没有配置环境变量,程序不知道去哪里寻找这些类文件,所以出现了以上错误。在Eclipse中执行正确是因为配置了工程的环境,通过build path已经将所需的类文件以jar包的形式添加到工程中。\[2\]\[3\] #### 引用[.reference_title] - *1* [出现报错:Exception in thread "main" java.lang.NoClassDefFoundError](https://blog.csdn.net/weixin_45794474/article/details/103231562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [执行jar包出错:Exception in thread "main" java.lang.NoClassDefFoundError](https://blog.csdn.net/g1269420003/article/details/81630031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值