eclipse中添加jar包后运行时提示NoClassDefFoundError

_emma 2018-05-04 03:44:51
求助各位
在eclipse中导入了maven项目之后,在一个类下需要用到telnet,因此在.java文件中导入 import org.apache.commons.net.telnet.TelnetClient; 此时提示有错误,显示无法解析导入org.commons.apache,在对应项目处右键build path,添加了外部包commons-net-3.6.jar,jar包是我在网上下载的,如图。

添加后不报错,在运行项目时出错,提示java.lang.NoClassDefFoundError: org/apache/commons/net/telnet/TelnetClient,查了之后发现是该类在编译时找到了,在运行时找不到所以出错。试了网上的解决办法都没用,检查了.classpath文件,也已经添加上了jar包,但是还是一直报错,如图。

求助解决方法
...全文
2122 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
本人吐血经验:NoClassDefFoundError查了一天都没有解决,最后重启eclipse解决。想撞墙
聪明的贺毅龙 2019-05-08
  • 打赏
  • 举报
回复
依赖包没导入吧...
shinian.. 2018-09-21
  • 打赏
  • 举报
回复
你好,运行时(runtime)标签在哪找???我怎么没找到
ZK20021 2021-07-11
  • 举报
回复
@shinian.. 你好,请问运行时(runtime)标签怎么找呀
_emma 2018-05-10
  • 打赏
  • 举报
回复
问题解决了,谢谢各位。下面附上解决办法
是添加jar包的方式出错了,在网上下载jar包后,在项目目录下新建lib文件夹,将jar包复制到lib目录下,如图

然后打开MANIFEST.MF文件下,选择“运行时(runtime)”标签,在右下的“类路径”处add,选择lib目录下的jar包,并勾选下方的“更新构建路径”,保存即可

这样问题就解决了,在编译和运行都没有错误了
ZK20021 2021-07-11
  • 举报
回复
@_emma 你好,请问运行时(runtime)标签怎么找呀
_emma 2018-05-08
  • 打赏
  • 举报
回复
你好,我上官网查了一下org.apache.commons.net.telnet.telnetclient这个类,它所在的包是commons-net.3.6.jar,我把这个包的好几个版本都试了,包括它相关的commons-net-sources-3.6.jar,commons-net-examples-3.6.jar包都添加了,还是一直报这个错java.lang.NoClassDefFoundError,我在想是不是我添加jar包的方法有问题,除了在项目右键build path外还有其他方法吗
  • 打赏
  • 举报
回复
引用 8 楼 cy_emma 的回复:
你好,我上官网查了一下org.apache.commons.net.telnet.telnetclient这个类,它所在的包是commons-net.3.6.jar,我把这个包的好几个版本都试了,包括它相关的commons-net-sources-3.6.jar,commons-net-examples-3.6.jar包都添加了,还是一直报这个错java.lang.NoClassDefFoundError,我在想是不是我添加jar包的方法有问题,除了在项目右键build path外还有其他方法吗
如果你没有导入就使用,编译就会报错,运行时错误只能是运行时的问题。
  • 打赏
  • 举报
回复
引用 6 楼 cy_emma 的回复:
[quote=引用 5 楼 u010970951 的回复:] [quote=引用 4 楼 cy_emma 的回复:] [quote=引用 2 楼 u010970951 的回复:] 编译成功,运行不成功,看你编译到哪个文件夹 去检查是否真的编译出了.class文件,可以尝试在项目里面获取一下class文件看能不能获取到; 一切正常编译成功的话,clean一下项目重新编译一下,或者移除这个jar重新添加部署
你好,我查看了编译之后的target文件夹,找到了我这个java文件对应的class文件,我clean了项目之后,重新添加了jar包,运行之后还是一样的错误[/quote] 如果还是没找到class,就不是程序的问题; 因为这是添加的jar包,里面都是class文件,所以编译是别人编译好的文件,找不到有可能是jar包有依赖。你可以反编译一下这个class文件,看一下导入了那些java类,查看是否有其他包里面的类[/quote] 意思是可能我缺少的org/apache/commons/net/telnet/telnetclient这个类有可能依赖其他jar包我没有添加进来吗?[/quote] 可能性是很大的。你可以去apache官网查看一下这个包,有说明
_emma 2018-05-07
  • 打赏
  • 举报
回复
引用 5 楼 u010970951 的回复:
[quote=引用 4 楼 cy_emma 的回复:] [quote=引用 2 楼 u010970951 的回复:] 编译成功,运行不成功,看你编译到哪个文件夹 去检查是否真的编译出了.class文件,可以尝试在项目里面获取一下class文件看能不能获取到; 一切正常编译成功的话,clean一下项目重新编译一下,或者移除这个jar重新添加部署
你好,我查看了编译之后的target文件夹,找到了我这个java文件对应的class文件,我clean了项目之后,重新添加了jar包,运行之后还是一样的错误[/quote] 如果还是没找到class,就不是程序的问题; 因为这是添加的jar包,里面都是class文件,所以编译是别人编译好的文件,找不到有可能是jar包有依赖。你可以反编译一下这个class文件,看一下导入了那些java类,查看是否有其他包里面的类[/quote] 意思是可能我缺少的org/apache/commons/net/telnet/telnetclient这个类有可能依赖其他jar包我没有添加进来吗?
  • 打赏
  • 举报
回复
引用 4 楼 cy_emma 的回复:
[quote=引用 2 楼 u010970951 的回复:] 编译成功,运行不成功,看你编译到哪个文件夹 去检查是否真的编译出了.class文件,可以尝试在项目里面获取一下class文件看能不能获取到; 一切正常编译成功的话,clean一下项目重新编译一下,或者移除这个jar重新添加部署
你好,我查看了编译之后的target文件夹,找到了我这个java文件对应的class文件,我clean了项目之后,重新添加了jar包,运行之后还是一样的错误[/quote] 如果还是没找到class,就不是程序的问题; 因为这是添加的jar包,里面都是class文件,所以编译是别人编译好的文件,找不到有可能是jar包有依赖。你可以反编译一下这个class文件,看一下导入了那些java类,查看是否有其他包里面的类
_emma 2018-05-07
  • 打赏
  • 举报
回复
引用 2 楼 u010970951 的回复:
编译成功,运行不成功,看你编译到哪个文件夹 去检查是否真的编译出了.class文件,可以尝试在项目里面获取一下class文件看能不能获取到; 一切正常编译成功的话,clean一下项目重新编译一下,或者移除这个jar重新添加部署
你好,我查看了编译之后的target文件夹,找到了我这个java文件对应的class文件,我clean了项目之后,重新添加了jar包,运行之后还是一样的错误
`ZWY` 2018-05-05
  • 打赏
  • 举报
回复
缺少jar或者jar没有倒进去
  • 打赏
  • 举报
回复
编译成功,运行不成功,看你编译到哪个文件夹 去检查是否真的编译出了.class文件,可以尝试在项目里面获取一下class文件看能不能获取到; 一切正常编译成功的话,clean一下项目重新编译一下,或者移除这个jar重新添加部署
QWERT4745 2018-05-04
  • 打赏
  • 举报
回复
重新部署,重启服务

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧