Xml java.lang.NoSuchMethodError:org.springframework.util.ClassUtils.forName(Ljava
我使用返回XML的非常简单的代码Xml java.lang.NoSuchMethodError:org.springframework.util.ClassUtils.forName(Ljava,xml,spring,rest,resttemplate,Xml,Spring,Rest,Resttemplate,我使用返回XML的非常简单的代码 RestTemplate restTemplate = new RestTemplate(); Source oResponse = restTemplate.postForObject(url, entity, Source.class, vars); XPathOperations xpathTemplate = new Jaxp13XPathTemplate(); String address = xpathTemplate.e
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)
java.lang.NoSuchMethodError:org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
位于org.springframework.xml.JaxpVersion(JaxpVersion.java:51)
位于org.springframework.xml.transform.TraxUtils.isStaxSource(TraxUtils.java:70)
位于org.springframework.xml.xpath.jaxp13xpathmetplate.evaluate(jaxp13xpathmetplate.java:131)
位于org.springframework.xml.xpath.jaxp13xpathmetlate.evaluateString(jaxp13xpathmetlate.java:91)
请帮忙。
谢谢
Vladimir运行时的NoSuchMethodError表示您使用的库版本与构建代码所依据的版本不同 在您的情况下,Spring是罪魁祸首。请在运行时检查类路径上的内容,并确保:
- 版本与编译时jar相同
- 如果存在多个版本,请删除不需要的版本
ClassUtils类包含在spring core jar中,因此我将确保在编译时和运行时都使用相同版本的jar。在迁移到spring 4.1.1时,我们遇到了类似的问题 在我们的例子中,我们有一个依赖项,如下所示
<dependency>
<groupId>org.springframework.javaconfig</groupId>
<artifactId>spring-javaconfig</artifactId>
<version>1.0.0.m3</version>
</dependency>
org.springframework.javaconfig
在stackoverflow中,我们不需要Spring 4.1.1的ConfigurationPostProcessor(我不确定启用此支持时的确切版本)
一旦我们从配置(Spring上下文文件)中删除了以下内容,问题就解决了
您可能已经明白了这一点,但在我的例子中,我使用的是一个版本不同于spring core的spring orm,因此在运行单元测试时会收到类似的错误消息。我从经验中了解到,项目中包含的所有spring jar文件都应该具有相同的版本,以避免不必要的问题。谢谢你,詹姆斯。我应该替换哪个.jar文件?@Vladimir你是如何构建你的应用程序的?@Vladimir我猜是spring core jar导致了这个问题。我已经编辑了我的答案。避免这个问题的最好方法是让所有spring jar都来自同一个构建。我使用的是STS 3.4版本。它有spring-core-4.0.1.RELEXPathOperations是org.springframework.xml.xpath的一部分,它不包含在spring-core.jar中。我应该怎么做?
<bean class="org.springframework.config.java.process.ConfigurationPostProcessor" />