java.lang.ClassCastException在Spring应用程序启动时发生

java.lang.ClassCastException在Spring应用程序启动时发生,java,spring,spring-boot,Java,Spring,Spring Boot,org.springframework.beans.BeanInstantiationException:未能 实例化 [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: 工厂方法“requestMappingHandlerAdapter”引发异常;嵌套 异常为java.lang.NoClassDefFoundError:无法初始化 班 org.springframework.

org.springframework.beans.BeanInstantiationException:未能 实例化 [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: 工厂方法“requestMappingHandlerAdapter”引发异常;嵌套 异常为java.lang.NoClassDefFoundError:无法初始化 班 org.springframework.http.converter.xml.SourceHttpMessageConverter

根本原因是

java.lang.ClassCastException:无法强制转换 org.springframework.http.converter.xml.SourceHttpMessageConverter$$Lambda$1320/1372257576 到org.xml.sax.EntityResolver

它发生在surefire运行单元测试时,spring版本是5.0.13.0版本

spring中的错误代码为

private static final EntityResolver NO_OP_ENTITY_RESOLVER =
            (publicId, systemId) -> new InputSource(new StringReader(""));

我不知道这是怎么发生的。以前有人见过吗?

通常在使用不兼容版本的JAR时会发生类似的情况。请将您的
pom.xml
添加到问题中。因为它很长,请参考@M。DeinumYou排除了很多依赖项,并自己管理了很多,而不是让Spring Boot处理它们。您使用的SpringCloud版本与SpringBoot2.0不兼容,它适用于较旧的版本,这可能会导致包含较旧的JAR/版本,从而导致错误。找到正确的兼容版本。根据我的测试,这是由jdk版本问题引起的:(可能根本原因是对类型推断机制的一些修改。@M.Deinum