问题处理
今天在慕课网上学习时用到了一个问题:在 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 包的位置,每次都手动的复制会造成许多不方便。