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

NoClassDefFoundError:ECLIPSE RCP和springframework中的org/springframework/web/client/RestClientException,spring,rest,templates,frameworks,rcp,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 我使用SPRINGFR

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模板捕获restapi的结果,并尝试使用JFACE在树状视图中显示结果

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

有人能帮忙吗

提前谢谢


Ismail

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


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

EclipsePDE为您做了很多这方面的工作(添加Spring项目的性质也是如此),但是您需要添加任何依赖项作为插件(也是OSGi模块),以便它们对Eclipse中构建的RCP产品运行程序可见。简单地将它们添加到构建类路径不会转换为包含在运行时类路径中


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

产品是使用PDE构建的吗?JAR是否显示在包资源管理器中的“插件依赖项”下?在运行产品之前,您是否单击了“验证插件”?Jar不在插件依赖项下,当我点击ADD时,我找不到org.springframework。因此,为了解决我的问题,我使用了Eclipse STS并将Spring特性添加到我的项目中。现在我可以找到org.springframework来定义我的插件依赖项了。通过在我的项目中使用Spring Nature(Dowload Eclipse STS)解决了NoClassDefFoundError之后,我不得不面对一个新问题:NoSuchMethodError。这是关于:org.codehaus.jackson.map.ObjectMapper!org.codehaus.jackson软件包已经在我的图书馆里了。所以,我现在正试图用你的链接解决这个问题。我希望这会有帮助。当然。。对于任何进一步的问题,你可以在这里或博客上更新。我已经知道NoSuchMethodError是jar版本的问题。在我的例子中,NoSuchMethodError关注点是:org.codehaus.jackson.map.ObjectMapper。在我的插件依赖项中,我使用:org.codehaus.jackson.mapper 1.6.0,其中包括ObjectMapper方法。我没有任何其他版本的jackson jar。您可以获取mapper jar的更新版本,也可以添加一个排除项,如本文所述-我已将Maven Nature添加到我的项目中,并将jackson依赖项添加到我的pom中。一次又一次地显示相同的错误:)!好吧,我明白你在说什么了。我现在回到Eclipse,我刚刚下载了PDE。那么它是如何工作的呢?所以我可以找到org.springframework?Jar不在插件依赖项下,它们在引用库下。是的,我总是在运行产品之前验证插件。好吧,PDE实际上附带了STS。当您创建一个新项目时,您是否创建了一个插件项目,并将其作为一个Eclipse应用程序进行测试?我解决了我的问题:我从现有Jar档案创建了一个插件,并添加了运行我的产品所需的Jar。然后我在Dependecies选项卡中添加了这个插件。现在,我可以毫无错误地启动我的产品了!:)很高兴听到。你觉得我的回答有用吗,或者至少为你指明了正确的方向?