来自Maven依赖的ClassNotFoundException但类存在并且在类路径中

时间:2019-09-23 14:39:51

标签: java eclipse maven tomcat classnotfoundexception

经过数天的互联网上类似问题及其解决方案的搜索后,我现在请求您的帮助。

首先,我正在使用:

Java 8(openjdk),Maven 3,Tomcat 8.5,我使用Eclipse-2019-09作为我的IDE。

对于这个项目,我要与Maven进行一场战争,将资源添加到tomcat服务器并启动它。

现在的问题是,每当我尝试启动tomcat服务器时,都会出现此错误:

Caused by: java.lang.ClassNotFoundException: org.codehaus.stax2.ri.Stax2EventFactoryImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

编辑:更准确地说,此错误在创建bean时附加。 Bean名称为“ sessionFactory”,其类为:org.springframework.orm.hibernate5.LocalSessionFactoryBean

我首先认为Eclipse不能解决stax2依赖关系,但是当我查看类路径时,依赖关系就在那里。 (如下图所示)

dependency in Eclipse pom.xml view

所以我以为jar可能不包含必需的类,但是在导航器中打开jar时,类仍然存在。

opened jar in the navigator

我最后要检查的一件事是查看jar文件是否包含在编译项目后生成的war文件中,并且该类仍然存在。

class exists in War file

所以,我尝试了什么:

  • Maven>更新项目,清理/重建项目,Maven清理/安装并编译项目,清理tomcat工作目录,重新发布等。

  • 卸载/重新安装Eclipse,删除所有隐藏的文件夹。

  • 删除项目,将其克隆到新的工作区中。

  • 更改了pom.xml中stax2的版本

  • 检查缺少的jar是否在部署的战争中

  • 删除了我的.m2 /存储库

  • 在我的pom.xml中将stax2-api作为第一个依赖项加载

奇怪的是,每当我在同事计算机上克隆项目时,他都可以毫无例外地编译/启动服务器。

我必须承认,我有点迷茫,花了很多时间在论坛上搜索答案,但是我尝试的所有结果都失败了。

好吧,谢谢您阅读我,如果有人有任何想法,请告诉我。

0 个答案:

没有答案