zoukankan      html  css  js  c++  java
  • 打成Jar包后运行报错 Unable to locate Spring NamespaceHandler for XML schema namespace

    MAVEN项目,在IDEA中运行正常,但是把它打成jar包后再运行就会出现异常:
     
    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: URL [jar:file:/home/jiashubing/mysoft/jartest3/cli3.jar!/META-INF/spring/spring-shell-plugin.xml]
     
    这个错误并不少见,但是网上搜到的多为在项目运行的时候报这个错误。也有jar包中报这个错误的帖子,但是都说配置文件的版本不一致导致的。这些我都试过了,都无法解决。
     
    尝试了很多次以后,终于发现,虽然我在项目中是有spring-shell-plugin.xml这个配置文件的,但是打成jar包以后,jar包中并没有包含这个配置文件
     
    原来,在IDEA中,MAVEN项目是会自动扫描 src/main/resources 路径下的资源配置文件的,所以无需额外配置。
    自动扫描的原因是:resource 下的文件编译之后存放的位置,直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径
     
     
    但是打成Jar包以后,它是不会自动扫描 src/main/resources 路径下的配置文件了,所以应当在这里手动配置,让它能扫描到xml配置文件。
    只需要在pom.xml中添加以下代码:
    <resources>
       <resource>
          <directory>src/main/resources</directory>
          <includes>
             <include>**/*.xml</include>
          </includes>
       </resource>
    </resources>
     
    原创文章,转载请注明出处!

    补充一下
    MAVEN项目的标准目录结构:
     
    src
      -main
          –bin 脚本库
          –java java源代码文件
          –resources 资源库,会自动复制到classes目录里
          –filters 资源过滤文件
          –assembly 组件的描述配置(如何打包)
          –config 配置文件
          –webapp web应用的目录。WEB-INF、css、js等
      -test
          –java 单元测试java源代码文件
          –resources 测试需要用的资源库
          –filters 测试资源过滤库
      -site Site(一些文档)
    target
    LICENSE.txt Project’s license
    README.txt Project’s readme
     
    红色字体的四个目录是常用的
  • 相关阅读:
    Numpy数据处理函数
    数据库-创建表
    描述统计学:表格法和图形法
    最短路 || POJ 1511 Invitation Cards
    搜索 || DFS || UOJ 146 信息传递
    最短路 || UOJ 19 寻找道路
    最短路 || POJ 1847 Tram
    博弈论
    筛选法 || POJ 3292 Semi-prime H-numbers
    团队第一次作业
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/6625123.html
Copyright © 2011-2022 走看看