NoSuchMethodError:org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg / springframework / core / env / Environment; 随着zkoss

我正面临以下错误,

java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment; at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:81) at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1423) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1413) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:239) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:196) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:160) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5198) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5481) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 

我从谷歌搜索中了解到它与依赖问题有关。 所以这是我的pom.xml

  4.0.0 TempApp com.zbc.tempapp 1.0-SNAPSHOT war TempApp   ZK CE ZK CE Repository http://mavensync.zkoss.org/maven2    1.0.1.Final 4.3.6.Final 4.0.4.Final 5.1.2.Final 4.1.2.RELEASE 2.0 1.4.3.RELEASE 3.2.1 4.0 1.3.2 2.2.1 7.0.3 3.1.1 4.11 2.4 1.8 1.8 3.0 UTF-8     org.apache.logging.log4j log4j-api ${log4j2Version}   org.apache.logging.log4j log4j-core ${log4j2Version}    org.hibernate.javax.persistence hibernate-jpa-2.0-api ${jpa.version}   org.hibernate hibernate-core ${hibernate.version}   org.hibernate hibernate-entitymanager ${hibernate.version}   org.hibernate.common hibernate-commons-annotations ${hibernate.commons.annotation.version}   org.hibernate hibernate-validator ${hibernate.validator.version}    org.springframework.data spring-data-jpa ${springDataJpaVersion}   org.springframework spring-context ${springVersion}   org.springframework spring-web ${springVersion}   org.springframework spring-webmvc ${springVersion}   org.springframework spring-test ${springVersion}    junit junit ${junit.version}    org.quartz-scheduler quartz ${quartzVersion}    org.zkoss.zk zkplus ${zkVersion}   org.zkoss.zk zhtml ${zkVersion}   org.zkoss.zk zkbind ${zkVersion}   org.zkoss.zk zul ${zkVersion}   org.slf4j slf4j-jdk14    <!--  org.zkoss.zk zkspring-core 3.1.1   ch.qos.logback logback-classic    --> <!--  org.zkoss.zk zkspring-webflow 3.1.1  --> <!--  org.zkoss.zk zkspring-security 3.1.1  -->   org.apache.commons commons-email ${apacheCommonsEmail}   org.apache.commons commons-lang3 ${apacheCommonsLangVersion}   org.apache.commons commons-collections4 ${apacheCommonsCollection}       org.apache.maven.plugins maven-war-plugin ${plugin.maven.war}    true  true    ${BUILD_TAG}      org.apache.maven.plugins maven-compiler-plugin ${plugin.maven.compiler}  ${maven.compiler.source} ${maven.compiler.target} ${project.build.sourceEncoding} true true true true    org.apache.maven.plugins maven-surefire-plugin 2.12.4     true         org.apache.maven.plugins maven-surefire-plugin     true      org.apache.maven.plugins maven-compiler-plugin  ${maven.compiler.source} ${maven.compiler.target} ${project.build.sourceEncoding} true true true true      

谢谢。

我遇到了和你一样的问题。 两个小时的发现是错误的…在找到你的问题后,发现这可能是一个依赖性问题。

是的,我解决了这个问题只是添加了spring bean依赖

   org.springframework spring-beans 4.1.6.RELEASE  

这对我来说是弹簧jar和弹簧数据之间的依赖兼容性问题。

错误之前的版本(没有错误):

 4.1.0.RELEASE 1.6.1.RELEASE 

将spring数据更新为1.10.2.RELEASE后,错误追加,通过将spring版本升级到4.3.2.RELEASE解决:

 4.3.2.RELEASE 1.10.2.RELEASE 

为确保使用正确的spring版本,可以跳过spring依赖项的maven声明,并仅保留spring数据依赖项。 或者您可以在maven存储库中检查spring数据版本使用的spring版本并进行更新。

 if using spring 3.17 use  org.springframework.data spring-data-jpa 1.6.6.RELEASE  

这个错误非常清楚,该类

 org.springframework.beans.factory.xml.XmlReaderContext 

不包含方法getEnvironment(java方法表示法)

 .getEnvironment()Lorg/springframework/core/env/Environment 

如果你查看你的应用程序中包含的Spring bean库,并在类上运行javap -l,你可能会注意到这个方法确实不存在…

 **javap.exe c:\XmlReaderContext.class** -l Compiled from "XmlReaderContext.java" public class org.springframework.beans.factory.xml.XmlReaderContext extends org.springframework.beans.factory.parsing.ReaderContext { public org.springframework.beans.factory.xml.XmlReaderContext(org.springframework.core.io.Resource, org.springframework.beans.factory.parsing.ProblemReporter, org.springframework.beans.factory.par aderEventListener, org.springframework.beans.factory.parsing.SourceExtractor, org.springframework.beans.factory.xml.XmlBeanDefinitionReader, org.springframework.beans.factory.xml.NamespaceHandlerRes public final org.springframework.beans.factory.xml.XmlBeanDefinitionReader getReader(); public final org.springframework.beans.factory.support.BeanDefinitionRegistry getRegistry(); public final org.springframework.core.io.ResourceLoader getResourceLoader(); public final java.lang.ClassLoader getBeanClassLoader(); public final org.springframework.beans.factory.xml.NamespaceHandlerResolver getNamespaceHandlerResolver(); public java.lang.String generateBeanName(org.springframework.beans.factory.config.BeanDefinition); public java.lang.String registerWithGeneratedName(org.springframework.beans.factory.config.BeanDefinition); public org.w3c.dom.Document readDocumentFromString(java.lang.String); } 

只需升级到包含此Spring bean依赖关系> 4.3.2的方法的更高版本

问候

SAHI

如果在启动/部署Web应用程序期间在服务器上抛出此错误,则

  1. 在项目org.springframework.beans.factory.xml.XmlReaderContext中找到包含所提及类的jar

  2. 尝试在公共lib文件夹中的服务器上找到相同的jar。

  3. 设置相同版本的jar或将提供的范围放在pom.xml文件中