我使用非常简单的代码返回 XML
RestTemplate restTemplate = new RestTemplate();
Source oResponse = restTemplate.postForObject(url, entity, Source.class,
vars);
XPathOperations xpathTemplate = new Jaxp13XPathTemplate();
String address = xpathTemplate.evaluateAsString("//status", oResponse);
但是,我收到以下错误
java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
at org.springframework.xml.JaxpVersion.<clinit>(JaxpVersion.java:51)
at org.springframework.xml.transform.TraxUtils.isStaxSource(TraxUtils.java:70)
at org.springframework.xml.xpath.Jaxp13XPathTemplate.evaluate(Jaxp13XPathTemplate.java:131)
at org.springframework.xml.xpath.Jaxp13XPathTemplate.evaluateAsString(Jaxp13XPathTemplate.java:91)
请帮忙。 谢谢, 弗拉基米尔
最佳答案
运行时出现 NoSuchMethodError 表示您使用的库版本与构建代码所针对的版本不同。
就你而言,Spring 是罪魁祸首。在运行时检查类路径上的内容并确保以下内容:
- 版本与编译时jar相同
- 如果有多个版本,请删除不需要的版本
查看http://docs.spring.io/spring/docs/3.2.0.M1/api/org/springframework/util/ClassUtils.html ,看来 ClassUtils.forName(String) 从 Spring 3 开始已被弃用。我的猜测是您已经针对具有此方法的版本构建了代码,但正在使用该方法已被删除的版本运行它。
ClassUtils 类包含在 spring-core jar 中,因此我将确保在编译和运行时使用该 jar 的相同版本。
关于xml - java.lang.NoSuchMethodError : org. springframework.util.ClassUtils.forName(Ljava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57308530/