0,
There is special support for retrieving multiple class path resources with the same name, via the "classpath*" prefix. For example, "classpath*:/beans.xml" will find all beans.xml files in the class path, be it in "classes" directories or in JAR files. This is particularly useful for auto-detecting config files.
1,
Hmm..After reading PathMatchingResourcePatternResolver, it looks like classpath* prefix should work with wildcards in mutliple JARs. My test showed it worked for contexts in WEB/classes, but not with a mix in WEB-INF/classes, and some in JARs in WEB-INF/lib. Maybe a bug?
Just updating this post...
OK - just to clarify after feedback from Juergen. classpath*: and wildcards do work, but not from the root directory within JARs. So for application contexts in the classpath at:
/com/company/applicationContext.xml
/com/company/applicationContext-ds.xml
If they're in WEB-INF/classes the following will work:
classpath*:**/applicationContext*.xml
If they're in a JAR in WEB-INF/lib the following will work:
classpath*:/com/**/applicationContext*.xml
2,
When you use 'classpath:' for an Ant style wildcard search, Spring uses a single classpath directory for the search. The documentation is vague, but it seems the directory returned will be the first one provided by ClassLoader.getResources(""). In our case, it returned the '/target/test-classes' directory that contains applicationTest.xml and our test classes, instead of '/target/classes' which contains application.xml and all the *.hbm.xml files.
Using the 'classpath*:' prefix fixes the problem. It indicates that the resource loader should look in all directories on the classpath, so making this change solved our problem. Apparently Spring maintains both prefixes because limitations in the Classloader (at the specification level) make it difficult to search for resources in the classpath root when performing wildcard searches across all classpath directories. This suggest it might be good practice to always create a directory to contain resources you might otherwise want to put in the classpath root and always use the 'claspath*:' prefix.
分享到:
相关推荐
Spring 配置中的classpath:与classpath*:的区别 Spring 配置中的classpath:与classpath*:的区别是 Spring 框架中一个常见的问题。本文主要介绍了这两种路径的区别、使用场景及注意事项,以帮助读者更好地理解和使用...
1. **临时设置 Classpath**: - 可以使用 `set CLASSPATH=路径`(Windows)或 `export CLASSPATH=路径`(Linux/Mac)来临时修改环境变量中的 classpath。 - 例如:`set CLASSPATH=E:\test`。 2. **持久化设置 ...
在Spring中,我们通常使用`classpath:`或`classpath*:`前缀来指定资源的位置。这两个前缀在处理多个类路径位置时有微妙的区别。 标题"加载jar包中的spring配置文件"涉及到的关键技术点如下: 1. **类路径...
- **CLASSPATH**: 类路径,用于指定Java虚拟机(JVM)在加载类文件时的搜索路径。如果不设置CLASSPATH,则默认只会在当前目录下查找类文件。 - **PATH**: 系统路径,用于指定操作系统执行命令时可以访问的可执行文件...
- 通常情况下,`.class` 文件需要放在 **classpath** 中定义的路径下,否则会因为找不到类文件而抛出 `ClassNotFoundException` 或 `NoClassDefFoundError` 异常。 #### 四、环境变量的验证 完成以上步骤后,可以...
**CLASSPATH**环境变量用于指定Java类库或依赖包的位置。正确的**CLASSPATH**设置对于加载类和资源至关重要。在Windows环境下,可以通过以下方式设置**CLASSPATH**: ``` CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\...
Spring提供了多种方式来加载配置文件,这里介绍两种常见的加载方式:`classpath:` 和 `classpath*:`。 - **`classpath:`** - **定义**:使用`classpath:`前缀时,Spring只会从当前项目的类路径(Classpath)下加载...
**Classpath** 环境变量指定了Java运行时搜索用户类和库文件的路径。通过设置此变量,可以告诉Java虚拟机在哪里查找用户自定义类和库文件。 **步骤:** 1. 同样,在“环境变量”设置界面中找到或新建**Classpath**...
**Classpath**环境变量指定了Java虚拟机(JVM)搜索用户自定义类文件的路径。 - **设置方法**: 1. 在“环境变量”对话框中点击“新建”,创建名为“classpath”的系统变量。 2. 设置变量值为“.;%JAVA_HOME%\lib\...
**classpath** 是一个环境变量,在Java编程中扮演着极其重要的角色。它指定了Java虚拟机(JVM)搜索和加载类文件(class files)的位置。在Java应用程序运行时,JVM会根据设置的classpath环境变量来查找用户自定义的类和...
- **解决方法:** 检查类路径(**CLASSPATH**)是否包含正确的库文件位置,以及是否正确设置了**JAVA_HOME**。 通过以上步骤,您可以成功地在Windows 7系统上配置好JDK 1.7的环境变量,并进行基本的Java编程工作。...
- 如果同时存在目录和jar包,且没有使用classpath*前缀,Spring默认只会加载目录下的配置文件。 2. **使用通配符**:当路径中包含通配符(如`**/*`)时,Spring将尝试加载所有匹配的配置文件。例如: - 如果配置...
3. **CLASSPATH**: 指定 Java 类库或依赖包的路径。 #### 三、JDK 1.6 环境变量配置步骤 ##### 方法一:最简单的配置方法 1. **设置 JAVA_HOME**: - 打开“我的电脑”属性 -> 高级 -> 环境变量。 - 新建变量名 ...
1. **理解Classpath**:在Java中,Classpath是JVM(Java虚拟机)查找类和资源文件的路径。当应用运行时,如果需要读取外部配置文件,就需要将这些文件包含在Classpath内。 2. **Tomcat的Classpath配置**:Tomcat的...
3. **CLASSPATH**:用于指定Java虚拟机(JVM)在运行时搜索类文件的路径,包括`.jar`包在内的各种类库。 #### 二、Windows XP下的JDK环境变量配置 在Windows XP系统中,配置JDK环境变量步骤如下: 1. **安装JDK**:...
3. **CLASSPATH**: 设置类库路径,包括JDK自带库及其他必要的第三方库。 #### 详细介绍 在计算机科学领域,特别是在Java开发环境中,正确配置环境变量是确保应用程序能够顺利运行的关键步骤之一。本文将详细介绍...
- **CLASSPATH**: 用于指定Java类库或依赖包的位置,是Java虚拟机加载类的路径。 #### Windows环境下的配置步骤 ##### 前置准备 1. **安装JDK**:确保已经安装了JDK,并记录安装路径。例如,本文档中的示例路径为 ...
Resource[] resources = resolver.getResources("classpath*:META-INF/INDEX.LIST"); Assert.assertTrue(resources.length > 1); //将加载多个模式匹配的Resource resources = resolver.getResources(...
**CLASSPATH** CLASSPATH环境变量是用来告诉Java虚拟机(JVM)在哪里寻找类(class)文件。它决定了JVM在运行Java程序时如何加载所需的.class文件。 1. **类搜索路径**:当执行Java程序时,如果没有指定类的完整路径,...
- **CLASSPATH**:用于指定Java虚拟机(JVM)加载类库(class libraries)的路径。它告诉Java命令如何找到所需的类文件。 #### 三、在Windows XP系统下配置JDK环境变量 ##### 1. 安装JDK - 首先安装JDK,并选择合适的...