构建路径中资源的 NoClassDefFoundError

NoClassDefFoundError for resource in build path

我正在尝试将 Apache Ignite 添加到 Eclipse 中使用 ant 构建的现有 CSV 项目(none 这些是我可以控制的)。

我已将以下 jar 添加到构建路径中:

我可以从 Eclipse 中的 Ignite 导入我需要的东西,并且项目没有错误地符合要求,但是当我去启动已编译的应用程序时,我收到以下错误:

org.springframework.beans.factory.BeanCreationException:创建名称为 'xxxx' 的 bean 在 class 路径资源 [yyyyy.xml] 中定义时出错:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [xxxx]:构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: org/apache/ignite/spi/discovery/tcp/ipfinder/TcpDiscoveryIpFinder .... 原因:构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: org/apache/ignite/spi/discovery/tcp/ipfinder/TcpDiscoveryIpFinder

但是在 Eclipse 中,在项目资源管理器中我可以展开 Referenced Libraries->ignite-core-2.9.1.jar 并查看 spi.discovery/tcp/ipfinder/TcpDiscoveryIpFinder

作为一个额外的变化,未能实例化的 class 甚至不使用 Ignite 或 TcpDiscoveryIpFinder。

这个过程在过去用于将诸如 Mockito 之类的东西添加到项目中是有效的,但在这种情况下不是这样。

好吧,再想一想我意识到我需要将点燃罐添加到 apache-tomcat/lib。

这解决了问题。

至于在 Mokito 之前没有发生这种情况的原因是所有单元测试仅 运行 在 Eclipse 中,而不是在实际应用程序中。