我有一个正在使用Spring OXM Tiger的项目。我必须升级使用Spring Core (4.2.8)的专有框架,并且存在兼容性问题。
当框架将Spring框架从3.0.x升级到4.2.8时,我遇到了以下异常:
java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
at org.springframework.oxm.jaxb.JaxbUtils.<clinit>(JaxbUtils.java:44)
at org.springframework.oxm.jaxb.Jaxb2Marshaller.createJaxbContext(Jaxb2Marshaller.java:272)
at org.springframework.oxm.jaxb.AbstractJaxbMarshaller.afterPropertiesSet(AbstractJaxbMarshaller.java:125)
确实发生了JaxbUtils从Spring Core依赖项调用ClassUtils.forName(Ljava/lang/String;)
:
Class Jaxbutils from Spring Oxm 1.5.8:
static {
try {
ClassUtils.forName(JAXB_2_CLASS_NAME);
jaxbVersion = JAXB_2;
}
catch (ClassNotFoundException ex) {
// leave JAXB 1 as default
}
}
但是,Spring Core 4.2.8.RELEASE不再提供此签名:
Class ClassUtils from Spring Core 4.2.8:
public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError {
此刻,我需要Spring OXM Tiger来使用StringSource,XPathOperations,Jaxb2Marshaller等……但是它实际上不适用于当前版本的Spring Core。
我找不到使用Spring Core 4.2.8和另一个版本的Spring OXM Tiger来使用编组/解组和XPath操作的解决方法。
该如何解决此问题?我有点卡住。有没有一种方法可以不使用Spring OXM而仍然可以与XPath和Jaxb2Marshallers一起使用?
谢谢
答案 0 :(得分:1)
可能已经晚了,但是您尝试使用org.springframework:spring-oxm
而不是org.springframework.ws:spring-oxm
并完全摆脱了spring-oxm-tiger吗?