`
skzr.org
  • 浏览: 365600 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

spring通配符jar资源加载问题

阅读更多

jar资源加载问题

 

  • 问题:Spring加载jar中的:classpath*:xxx/applicationContext*.xml文件失败
  • 环境:
    1. jar文件中文件: classpath*:xxx/applicationContext*.xml
    2. Eclipse使用“导出”jar时未选择”Add directory entries”(选择后,不会出现此问题)如下图:

       
  • 分析:
    1. 代码:
      //Resource[] org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(String locationPattern) throws IOException
              protected Resource[] findPathMatchingResources(String locationPattern) throws IOException {
                      String rootDirPath = determineRootDir(locationPattern);
                      String subPattern = locationPattern.substring(rootDirPath.length());
                      Resource[] rootDirResources = getResources(rootDirPath);
                      Set<Resource> result = new LinkedHashSet<Resource>(16);
                      for (Resource rootDirResource : rootDirResources) {
                              rootDirResource = resolveRootDirResource(rootDirResource);
                              if (isJarResource(rootDirResource)) {
                                      result.addAll(doFindPathMatchingJarResources(rootDirResource, subPattern));
                              }
                              else if (rootDirResource.getURL().getProtocol().startsWith(ResourceUtils.URL_PROTOCOL_VFS)) {
                                      result.addAll(VfsResourceMatchingDelegate.findMatchingResources(rootDirResource, subPattern, getPathMatcher()));
                              }
                              else {
                                      result.addAll(doFindPathMatchingFileResources(rootDirResource, subPattern));
                              }
                      }
                      if (logger.isDebugEnabled()) {
                              logger.debug("Resolved location pattern [" + locationPattern + "] to resources " + result);
                      }
                      return result.toArray(new Resource[result.size()]);
              }
       
    2. 因为spring支持通配符加载资源,所以使用:Resource[] rootDirResources = getResources(rootDirPath);来加载目录,再定位子资源subPattern的路径,即可支持通配符加载资源
  • 大小: 76.1 KB
分享到:
评论
1 楼 skzr.org 2011-02-14  
http://download.oracle.com/javase/6/docs/api/index.html

JDK提供了一个JarFile的类

相关推荐

    Spring中使用classpath加载配置文件浅析

    如果存在同名的配置文件,但位于不同的位置,根据Spring加载类路径资源的策略,可能会加载到一个错误的文件。为了避免这种情况,开发者需要仔细设计自己的目录结构,并确保配置文件的命名和位置唯一,以避免冲突。 ...

    Spring源码含有通配符路径解析一[文].pdf

    在Spring框架中,资源路径解析是一项关键功能,它允许开发者使用通配符来加载一系列相关的配置文件或资源。本文将深入探讨Spring如何处理包含通配符的路径,特别是当路径以`classpath*`开头时的情况。 首先,让我们...

    Spring中如何加载多个配置文件.pdf

    需要注意的是,使用通配符的方式仅能匹配位于文件系统中的XML配置文件,对于打包在JAR包内的配置文件则不起作用。这是因为`ClassPathXmlApplicationContext`默认从classpath中查找配置文件,而这里的“文件系统”指...

    Java使用路径通配符加载Resource与profiles配置使用详解

    Ant路径通配符是Spring提供的一种强大的通配符匹配机制,能够从一个路径匹配一批资源。Ant路径通配符支持三种通配符:?、*、。 * ?:匹配一个字符,如“config?.xml”将匹配“config1.xml”。 * *:匹配零个或多...

    jarjar-1.4.jar

    总结来说,jarjar-1.4.jar是Java开发中的一个利器,能够帮助开发者高效地处理包名和类的重命名问题。通过cmd.txt和rule.txt的灵活配置,我们可以根据实际需求定制化地调整类路径,实现项目的优化和重构。熟练掌握jar...

    易语言文本实现匹配通配符

    本篇文章将详细探讨如何在易语言中实现文本匹配通配符的功能。 通配符是一种特殊的字符或字符串,用于表示一组可能的字符组合,常用于文件名搜索、正则表达式等场景。常见的通配符有星号(*)和问号(?)。星号代表零个...

    jarjar-1.4.jar 动态更改包名

    《使用jarjar-1.4.jar工具动态更改Java包名详解》 在Java开发中,有时我们需要对已有的jar包进行重命名或者调整包结构,以满足特定的需求,例如在Android开发中,为了防止库冲突或者实现不同版本的区分。这时,我们...

    delphi通配符查找函数(单元)的实例

    本函数没这问题,对不符合规范的通配符进行过预处理。 例如:母串“数据手册_WDT-1200E_20120709.docx”,查找通配符子串“W???12*09”,返回值为“WDT-1209”。 子串“WD*”,返回值为“WDT-1200E_20120709.docx”...

    中文子网掩码和通配符掩码计算器

    子网掩码和通配符掩码是网络管理员在配置IP网络时不可或缺的工具,用于定义网络和主机的边界..."中文子网掩码计算器.exe"提供的功能使得这些计算变得更加直观和简便,对于学习和实践网络技术的人来说是一项宝贵的资源。

    Spring2.5使用AOP需要的aspectJ

    2. **aspectjweaver.jar**:AspectJ织入器,它允许Spring在运行时动态地将切面应用到目标对象。 配置Spring以使用AspectJ,你需要: 1. 将上述两个jar文件添加到项目的类路径中。 2. 在Spring配置文件中启用AspectJ...

    浅析Spring配置中的classpath:与classpath*:的区别

    Spring 配置中的classpath:与classpath*:的区别是 Spring 框架中一个常见的问题。本文主要介绍了这两种路径的区别、使用场景及注意事项,以帮助读者更好地理解和使用 Spring 配置。 概念解释 classpath:是指 WEB-...

    Spring-Reference_zh_CN(Spring中文参考手册)

    4.7.2. Application context构造器中资源路径的通配符 4.7.2.1. Ant风格的pattern 4.7.2.2. classpath*: 前缀 4.7.2.3. 其他关于通配符的说明 4.7.3. FileSystemResource 提示 5. 校验,数据绑定,BeanWrapper,与...

    字符串/通配符匹配(C++)

    C++实现字符串匹配函数,匹配中可以包括通配符

    跟我学Spring,Spring3学习资料

    - **资源基础知识:** 介绍了Spring中资源抽象的概念,包括如何通过Spring加载和管理资源文件。 - **内置Resource实现与访问Resource:** Spring提供了一种统一的方式来访问不同资源,如文件系统、classpath、URL等...

    spring如何加载配置多个配置文件

    Spring 提供了多种方式来加载配置多个配置文件,包括可变参数加载、数组加载、通配符加载和包含关系等。通过这些方法,我们可以灵活地加载多个配置文件,以满足项目的需求。 应用场景 加载多个配置文件的应用场景...

    支持通配符的括号匹配问题源码

    判断一个有左括号和右括号、以及其他ASCII字符组成的表达式是合法。 判断条件是左括号-右括号数目、次序配对,可多层嵌套。如果有*,则*可作为0个或者1个右括号,如果匹配则输出...资源中包含详细源码+测试+visio流程图

    spring的学习笔记

    - **4.2 内置Resource实现**:Spring内置了多种Resource实现,如ClassPathResource、FileSystemResource等,用于从不同位置加载资源。 - **4.3 访问Resource**:讲解如何使用Resource接口的方法读取和写入资源。 -...

    基于spring boot的mqtt例子,使用注解将不同的主题分派给不同的任务 支持+、#通配符

    【作品名称】:基于spring boot的...【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    带通配符的字符串匹配算法

    在IT领域,字符串匹配是计算机科学中的一个基本问题,尤其在文本处理、数据搜索和模式识别等场景中广泛应用。带通配符的字符串匹配算法则是这个领域的延伸,它允许在模式字符串中包含特殊字符,如星号(*)或问号(?),...

Global site tag (gtag.js) - Google Analytics