java - Spring OXM 和 Spring Core 之间冲突的解决方法

标签 java spring spring-boot dependencies

我有一个正在使用 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/

相关文章:

Java NIO2 AsynchronousSocketChannel/AsynchronousServerSocketChannel 和 TLS/SSL

java - 使用入边和出边进行 Gremlin 遍历

java - 无法连接 mkdir() JavaFX 的日期和文件名

java - spring data mongodb 映射动态字段

spring - Spring Security User 类的 enable 属性的用途

multithreading - 在多线程上下文中使用 OAuth2RestTemplate

java - 在 High Sierra 中卸载 java9

java - Spring Beans : Scan for Converters, 注入(inject) CustomConversionServiceFactory

spring-boot - 如何更新多个spring config实例客户端

spring-boot - Spring boot 2.0.2,使用Spring数据如何从实体验证中获取消息