Tomcat 引入jar包导致的 NoClassDefFoundError 报错的问题解决

问题处理

今天在慕课网上学习时用到了一个问题:在 Tomcat 下跑项目时 new SAXreader(); 方法不执行。项目运行到 SAXReader reader = new SAXReader(); 时直接跳出整个方法,没有执行后面的代码,且控制台没有报错信息。

我使用 Maven 构建项目,pom 文件中的确引入了相关依赖,而且是目前最新的版本,不存在版本不兼容问题。

	<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
	<dependency>
	    <groupId>dom4j</groupId>
	    <artifactId>dom4j</artifactId>
	    <version>1.6.1</version>
	</dependency>

我在课程下方的评论处也看见有人遇到了同样的问题(原问题链接),然而并没有人回答。我在 Google,Stack Overflow 也没有找到有效的解决方法。


后来我突然想到以前手动引入 jar 包时常发生的一个问题,就是Tomcat 启动时默认在安装目录下的 lib 文件夹下寻找 jar 包,可能你将 jar 包下载到了项目目录下,而 Tomcat 的目录下没有该 jar 包,那么程序可以编译成功,但运行时就抛出 ClassNotFound 的异常。

于是我去看了下 Tomcat 下的 lib 目录,里面果然没有 dom4j 的相关 jar 包,Maven 默认将 jar 包下载到了 user 下的 .m2/repository 文件夹中,于是我把 jar 包复制过去,方法即可运行。

然而出现另外一个错误,发现 XStream 方法也出现了同样的问题,于是我把 xstream.jar 和 xmlpull.jar (XStream 依赖的 jar 包)也复制了过去,结果程序运行成功。


遗留的问题

Maven 所下载的 jar 包是否可以通过配置自动复制到 Tomcat 目录下,或者 Tomcat 启动时是否可以增加搜索 jar 包的位置,每次都手动的复制会造成许多不方便。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐秀_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值