构建路径中资源的 NoClassDefFoundError
NoClassDefFoundError for resource in build path
我正在尝试将 Apache Ignite 添加到 Eclipse 中使用 ant 构建的现有 CSV 项目(none 这些是我可以控制的)。
我已将以下 jar 添加到构建路径中:
- 缓存-api-1.1.1.jar
- ignite-core-2.9.1.jar
- ignite-core-2.9.1-javadoc.jar
- ignite-core-2.9.1-sources.jar
- 点燃-spring-2.9.1
- ignite-spring-2.9.1-javadoc
-ignite-spring-2.9.1-来源
我可以从 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 中,而不是在实际应用程序中。
我正在尝试将 Apache Ignite 添加到 Eclipse 中使用 ant 构建的现有 CSV 项目(none 这些是我可以控制的)。
我已将以下 jar 添加到构建路径中:
- 缓存-api-1.1.1.jar
- ignite-core-2.9.1.jar
- ignite-core-2.9.1-javadoc.jar
- ignite-core-2.9.1-sources.jar
- 点燃-spring-2.9.1
- ignite-spring-2.9.1-javadoc -ignite-spring-2.9.1-来源
我可以从 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 中,而不是在实际应用程序中。