我试图将我的应用程序升级到最新版本的Spring&骆驼,但我得到了下面列出的例外情况。我还列出了spring遇到问题的配置部分。仅供参考,我的应用程序(包括此配置元素)可以与旧版本的库一起使用。为什么弹簧4.3.3在Spring 3.1.1找到它时没有任何问题?
这些是我正在更新的图书馆:
我真的只改变了pom.xml&由于库更新导致的一些小的更改。任何人都可以指出我如何解决这个问题的正确方向吗?
Spring在这里遇到问题
<bean id="test.format" class="org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat">
<constructor-arg value="com.application.businessobject.test" />
</bean>
异常
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'test.format' defined in class path resource [trs.application.finance.businessactivities.watchers.externaldata.xml]: Unsatisfied dependency expressed through constructor parameter 0: Could not convert argument value of type [java.lang.String] to required type [java.lang.Class]: Failed to convert value of type [java.lang.String] to required type [java.lang.Class]; nested exception is java.lang.IllegalArgumentException: Cannot find class [com.application.businessobject.test]
答案 0 :(得分:2)
显然在早期的CAMEL版本中,有一个这个类的构造函数,它期望包作为String ... vararg参数,但是已经被这个提交删除了
https://github.com/apache/camel/commit/ce6bf6e6feb5f425cd544c4c1edfa2eb34641907
所以你的bean声明不再有效并导致上述异常
Could not convert argument value of type [java.lang.String] to required type [java.lang.Class]:
应该声明
<bean id="test.format" class="org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat">
<constructor-arg>
<value type="java.lang.Class">com.application.businessobject.Test</value>
</constructor-arg>
</bean>
答案 1 :(得分:1)
您需要将构造函数arg更改为类。像这样:
<constructor-arg>
<value type="java.lang.Class">com.application.businessobject.Test</value>
</constructor-arg>