camel 2.13.4是否可以与camel-saxon 3.14.0一起使用?

hujrc8aj  于 2022-12-23  发布在  Apache
关注(0)|答案(1)|浏览(117)

我尝试将项目中使用的camel-saxon版本从2.13.4更新到3.14.0,同时将camel-core版本保持在2.13.4。此外,我使用Java 1.8.265进行构建。一旦我将pom.xml中的camel-saxon版本从2.13.4更改为3.14.0,并尝试使用maven clean install进行构建,我会收到以下错误:

java.lang.NoSuchMethodError: org.apache.camel.language.xquery.XQueryLanguage.property(Ljava/lang/Class;[Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
    at org.apache.camel.language.xquery.XQueryLanguage.configureBuilder(XQueryLanguage.java:85)
    at org.apache.camel.language.xquery.XQueryLanguage.createExpression(XQueryLanguage.java:80)
    at org.apache.camel.language.xquery.XQueryLanguage.createExpression(XQueryLanguage.java:67)

我的第一个想法是尝试将camel-core从2.13.4升级到3.14.0,但如果可能的话,我想暂时避免这样做。那么,是否有API/jar或其他东西可以用来弥合camel-core和camel-saxon之间差距,或者是通过更新两个依赖项来升级camel-saxon的唯一方法?
如果有人感兴趣,我得到什么错误时,试图升级camel-core到3.14.0沿着camel-saxon.我得到以下错误:
org.apache.camel.创建路由失败异常:无法在以下位置创建路由route 2:〉〉〉输入输出[输入输出]〈〈〈输入路径:路由(route 2)[从[vm:urn:myurn] -〉[转换主体为...因为无法解析端点:xslt://路径/到/文件/我的文件。xsl?转换器工厂= t工厂,原因是:绑定具有以下名称的属性(transformerFactory=tFactory)时出错:bean上的transformerFactory:xslt://路径/到/文件/我的文件。xsl?转换器工厂= t工厂,值为:t工厂
和路线:

<bean id="tFactory" class="net.sf.saxon.TransformerFactoryImpl"/>
<camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
<route>
        <from uri="vm:urn:myurn" />
        <convertBodyTo type="java.lang.String"/>
        <log message="my message" loggingLevel="INFO"
            logName="my.logname" />
        <inOut uri="xslt:path/to/file/myfile.xsl?transformerFactory=tFactory"/>
        <convertBodyTo type="java.lang.String"/>
        <log message="my message" loggingLevel="INFO"
                logName="my.log" />
        <inOut uri="mock:processedout"/>
    </route>
</camelContext>
a14dhokn

a14dhokn1#

不需要,你的 Camel 依赖项应该总是与你使用的 Camel 版本匹配。有时候,如果你的 Camel 依赖项之一使用的库版本有一个bug,这个bug已经在以后的(次要的)版本中修补过了,你可能想/需要改变传递依赖项的版本,但仅此而已。
Camel版本2.13.4和3.14.x之间发生了很多变化,包括Camel 2.25.0在January 2022中达到EOL(生命周期结束),这意味着它将不再接收更新。
您可以选择将您的集成升级到最新的camel版本,或者实现一个定制的处理器或camel-component,其功能与您在集成中使用camel-saxon的功能相同,但使用的是最新版本的saxon相关库。

相关问题