我有一个正在使用 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 正在调用 ClassUtils.forName(Ljava/lang/String;)
来自 Spring Core 依赖项:
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 ?
谢谢,
最佳答案
可能已经晚了,但是您是否尝试使用 org.springframework:spring-oxm
而不是 org.springframework.ws:spring-oxm
并摆脱 spring -oxm-tiger 完全吗?
关于java - Spring OXM 和 Spring Core 之间冲突的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672395/