如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?

Posted

技术标签:

【中文标题】如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?【英文标题】:How to solve java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent? 【发布时间】:2019-03-26 15:51:11 【问题描述】:

我想测试一个由我和同事编写的骆驼组件。它在Karaf 上运行,并部署了以下camel 捆绑包:

80 │ Active  │  50 │ 2.17.1         │ camel-blueprint
81 │ Active  │  50 │ 2.17.1         │ camel-catalog
82 │ Active  │  50 │ 2.17.1         │ camel-core

组件和使用该组件的蓝图也被部署。我认为我错过了安装骆驼功能,它提供类 DefaultComponent,所以我认为没有必要审查代码。

我收到以下错误:

java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent

【问题讨论】:

那个类来自camel-core,所以它应该在那里。也许该错误是由它以某种方式隐藏的其他错误引起的。还要检查您尝试安装的捆绑包是否具有正确的 osgi 导入等。此外,您还需要详细说明您在该捆绑包中执行的操作导致此错误,也许您没有为 osgi 等设置正确的设置。 我检查了现有的camel-components 并注意到,我们在 mavens pom.xml 中忘记了一些 osgi 属性。所以我在camel.osgi.export.pkgcamel.osgi.import.additionalcamel.osgi.export.service中设置了属性pom 现在可以找到 DefaultComponent 的 ClassDef 了。所以你是对的@ClausIbsen - 我们没有为 osgi 正确设置它。 【参考方案1】:

我的错误是我没有正确设置Camel组件的Maven项目。为避免这种情况,您可以使用 archetype 开始开发 Camel 组件。

所以你可以这样开始:

mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-component -DarchetypeVersion=2.24.2

【讨论】:

以上是关于如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Ajax 跨域请求不到的问题

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题