Spring OXM和Spring Core之间冲突的java解决方案
我有一个项目正在使用Spring OXM Tiger。我必须升级一个使用Spring Core (4.2.8)的专有框架,并且我有一个兼容性问题
由于框架正在从3.0升级Spring框架。从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核心依赖项调用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
}
}
但是,弹簧芯4.2.8。版本不再提供此签名:
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等。。。但它实际上无法与当前版本的SpringCore协同工作
使用SpringCore4.2.8和SpringOXMTiger的另一个版本,我找不到任何解决方法来使用编组/解编和XPath操作
我能做些什么来解决这个问题?我有点困了。有没有办法不使用Spring OXM而仍然使用XPath和JAXB2Marshaller
谢谢,
# 1 楼答案
可能已经晚了,但您是否尝试过使用
org.springframework:spring-oxm
而不是org.springframework.ws:spring-oxm
并完全摆脱spring oxm tiger