【发布时间】:2012-10-22 01:16:17
【问题描述】:
“本地文件名”是指资源文件与类文件位于同一目录中。在下面的情况下,这是JUnitRunner.class 文件。如果路径不以 /' 开头,Java 的 getResource() 文件可以处理此问题
我想不通,如何做同样的ClassPathXmlApplicationContext 构造函数?
package springtests;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class JUnitRunner {
private final static Logger log = LoggerFactory.getLogger(JUnitRunner.class);
@Test
public void test() throws URISyntaxException {
String filename = "test01.xml";
URL url = getClass().getResource(filename);
File file = new File(url.toURI());
log.info("File exists: {}", file.exists());
try {
new ClassPathXmlApplicationContext(filename);
}
catch(Exception e) {
log.error("Can't load context", e);
}
}
}
输出如下
15:32:27,375 3 [main] INFO springtests.JUnitRunner - 文件存在:true 15:32:27,422 50 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - 刷新 org.springframework.context.support.ClassPathXmlApplicationContext@ee3aa7:启动日期 [Thu Nov 01 15:32:27 MSK 2012];上下文层次的根 15:32:27,475 103 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - 从类路径资源 [test01.xml] 加载 XML bean 定义 15:32:27,477 105 [main] 错误 springtests.JUnitRunner - 无法加载上下文 org.springframework.beans.factory.BeanDefinitionStoreException: IOException 从类路径资源 [test01.xml] 解析 XML 文档;嵌套异常为 java.io.FileNotFoundException: 类路径资源 [test01.xml] 无法打开,因为它不存在 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) ...更新
XML 文件与类文件位于同一文件夹中。可见getResource()看到了。
【问题讨论】:
-
你在哪里放置了 test01.xml?如果您使用的是 maven,您可以将它放在例如文件夹 test/resources/test01.xml 中并再次尝试您的测试吗?
标签: java spring classpath applicationcontext