• Spring5.2.X源代码编译-问题-Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]


      进行注解的测试,添加注解,并在config.xml配置了包扫描的内容:

        <context:component-scan base-package="org.example.*"/>

      运行代码后报错:

    Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
    Offending resource: class path resource [config.xml]
    
        at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:72)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:119)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:111)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
    ...

      后查询出是因为依赖的是Module,找到Spring-context.main中的编译文件中,META-INF下没有spring.handlers文件。于是修改了该子工程的spring-context.gradle文件:

      

      在原先内容的基础上添加了新的打包语句,作用是JAR包需要包含META-INF下的内容:

    jar {
        from('./src/main/java') {
            include 'META-INF/*'
        }
    }

      打包后,可以解压该JAR包,发现其中有我们需要的配置文件。此时SpringFrameworkDemo的Project Structure需要修改依赖。

      找到对应的工程结构,点击+并选择第一个:

      

       找到刚才打出的JAR包,并添加进去:

      

       取消对原先Module的依赖,并重新依赖新的JAR包:

      

       Apply-OK。

      再次运行代码,该问题解决,跟踪代码,会发现此时进入到已打好的JAR包中。

      如果有调试的需求,还是想进入到之前的依赖Module,修改源代码或者注释的内容模式时,可以将JAR包解压,找到META-INF目录下所有的文件,拷贝到spring-contextuildclassesjavamainMETA-INF目录下,然后再次添加对spring-context.main的Module依赖,并去除对之前的JAR包依赖即可。既可以进行源代码的修改,也解决了上文提到的问题。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      后记:目前没有找到合适的方法,最便捷的应该是用Gradle直接在build时就把相关的META-INF文件生成到spring-contextuildclassesjavamainMETA-INF目录中,后续找到会再次记录。

  • 相关阅读:
    ssl握手数据结构
    jQuery基础
    JS语法基础
    Hadoop2.5.2伪分布安装 【图文并茂】
    Hadoop 2.5.2 安装之 系统准备篇(ftp Jdk)
    SQL SERVER2000/2005 (mssql)常用命令
    Hadoop小文件带来的问题以及解决方案
    Hadoop单机模式的安装方法(实验楼版)
    Haddop 安装之 JDK
    HDFS 原理 及 命令
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/14233565.html
Copyright © 2020-2023  润新知