更正应用程序的类路径,使其包含一个兼容的 org.apache.camel.impl.converter.DefaultTypeContent 版本

Posted

技术标签:

【中文标题】更正应用程序的类路径,使其包含一个兼容的 org.apache.camel.impl.converter.DefaultTypeContent 版本【英文标题】:Correct the classpath of your application so that it contains a single, compatible version of org.apache.camel.impl.converter.DefaultTypeContent 【发布时间】:2022-01-01 16:17:24 【问题描述】:

在我的 spring boot 应用程序上设置 pom.xml 时,我在 eclipse-workspace 的控制台上遇到了这个错误。我目前正在使用 spring-boot 版本 2.5.6

行动:

更正应用程序的类路径,使其包含一个兼容的 org.apache.camel.impl.converter.DefaultTypeConverter 版本

下面的代码是我添加的依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-spring-boot-starter</artifactId>
        <version>3.13.0</version>
    </dependency>
    <dependency>
        <groupId>org-apache.camel</groupId>
        <artifactId>camel-jackson-starter</artifactId>
        <version>$camel.version</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-swagger-java-starter</artifactId>
        <version>$camel.version</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-servlet</artifactId>
        <version>$camel.version</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>java.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.plugin</groupId>
        <artifactId>spring-plugin-core</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
    </dependency>
<dependencies>

只是不知道我的一些依赖有没有不兼容的地方。

提前感谢您的帮助。

编辑: 其他日志

Description

An attempt was made to call a method that does not exist. The attempt was made from the following location:

org.apache.camel.impl.engine.SimpleCamelContext.createTypeConverter(SimpleCamelContext.java:138)

referring to this code

135: protected TypeConverter createTypeConverter()
136:    return new DefaultTypeConverter(
137:        getCamelContextReference(), getPackageScanClassResolver(), getInjector(),
138:        isLoadTypeConverter());



The following method did not exist:

org.apache.camel.impl.converter.DefaultTypeConverter. <init>(Lorg/apache/camel/CamelContext;Lorg/apache/camel/spi/PackageScanClassResolver;Lorg/apache/camel/spi/Injector:V

The method’s class, org.apache.camel.impl.converter.DefaultTypeConverter, is available from the following locations: 

jar:file:/apache/camel/camel-base/3.0.0-M4/camel-base-3.0.0-M4.jar!/org/apache/camel/impl/converter/DefaultTypeConverter.class

The class hierarchy was loaded from the following locations:

org.apache.camel.impl.converter.DefaultTypeConverter: camel/camel-base/3.0.0-M4/camel-base-3.0.0-M4.jar
org.apache.camel.impl.concerter.BaseTypeConverterRegistry file: camel/camel-base/3.0.0-M4/camel-base-3.0.0-M4.jar
org.apache.camel.support.service.ServiceSupport: file:/camel/camel-api/3.13.0/camel-api-3.13.0.jar
org.apache.camel.support.service.BaseService: file:/camel/camel-api/3.13.0/camel-api-3.13.0.jar

【问题讨论】:

你能分享完整的错误信息吗?它应该提供有关尝试调用DefaultTypeConverter 的代码以及DefaultTypeConverter 可用的类路径上的位置的更多信息。 你好,我已经添加了额外的日志 【参考方案1】:

您正在混合不同版本的 Camel 罐子。您有一些版本为3.13.0,另一些版本为3.0.0-M4,它们彼此不兼容。

你还没有分享你所有的pom.xml,所以我不能确定,但​​我猜camel.version 属性设置为3.0.0.M4,这与你对 Camel 启动器的依赖不相符其中版本为3.13.0:

<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-spring-boot-starter</artifactId>
    <version>3.13.0</version>
</dependency>

您应该更新您的 pom,以便为所有 Camel 模块使用一致的版本。您可以通过在命令行上运行mvn dependency:list 来检查它们的版本。

【讨论】:

以上是关于更正应用程序的类路径,使其包含一个兼容的 org.apache.camel.impl.converter.DefaultTypeContent 版本的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 包含自定义字体以使其与最大浏览器兼容的最佳方法是啥?

替换默认导入的库 Spark 的类路径

添加对 C# 项目的引用以使其与版本控制兼容的正确方法

根据dplyr :: select兼容的类/类型选择列

提示:解决冲突后,标记更正的路径

CustomTextField - 自动完成/自动更正不会在点击时关闭