ECLIPSE RCP和SPRINGFRAMEWORK中的NoClassDefFoundError:org / springframework / web / client / RestClientException

时间:2013-11-19 12:32:53

标签: spring rest templates frameworks rcp

RCP 开发者,

我的产品遇到了问题。 当我启动它时,我得到了这个:

org.eclipse.e4.core.di.InjectionException:java.lang.NoClassDefFoundError:org / springframework / web / client / RestClientException

引起:java.lang.NoClassDefFoundError:org / springframework / web / client / RestClientException

我正在使用 SPRINGFRAMEWORK 中的 REST 模板来捕获 REST API 的结果,并尝试将其显示在Treeview使用 JFACE

所有springframewok jar都正确添加到项目中。

有人可以帮忙吗?

提前致谢!

伊斯梅尔

2 个答案:

答案 0 :(得分:0)

NoClassDefFoundError指定您在编译时可用该类但在运行时期间丢失了该类。在你的情况下,类路径中似乎缺少org.springframework.web-3.0.5.RELEASE jar。如果您仍然遇到问题,请按照以下步骤进行调试:

http://javareferencegv.blogspot.com/2013/10/debugging-javalangnoclassdeffounderror.html

答案 1 :(得分:0)

我认为你错过了Eclipse RCP中的核心概念,那就是OSGi。 OSGi是一个模块系统,它要求每个模块(即JAR)导入它使用的依赖关系。这些条目可在JAR的MANIFEST.MF中找到。虽然可以手动编辑它们以导入这些依赖项,但通常使用工具(例如bnd)可以更轻松地管理它。

Eclipse PDE为您完成了大部分工作(添加Spring项目本质也是如此),但您需要添加任何依赖项作为插件(也是OSGi模块),以便RCP产品运行器可以看到它们在Eclipse中构建。只需将它们添加到构建类路径中,就不会将它们转换为包含在运行时类路径中的它们。

当您尝试在Eclipse中运行产品/应用程序时,请确保单击“验证插件”按钮以确保它们都是您正在运行的目标RCP应用程序的可见运行时。