gpt4 book ai didi

java - 如何将本地文件名传递给 ClassPathXmlApplicationContext?

转载 作者:搜寻专家 更新时间:2023-11-01 01:10:47 26 4
gpt4 key购买 nike

“本地文件名”是指资源文件与类文件位于同一目录中。在下面的例子中,这是 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  - File exists: true15:32:27,422 50   [main] INFO  org.springframework.context.support.ClassPathXmlApplicationContext  - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ee3aa7: startup date [Thu Nov 01 15:32:27 MSK 2012]; root of context hierarchy15:32:27,475 103  [main] INFO  org.springframework.beans.factory.xml.XmlBeanDefinitionReader  - Loading XML bean definitions from class path resource [test01.xml]15:32:27,477 105  [main] ERROR springtests.JUnitRunner  - Can't load contextorg.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [test01.xml]; nested exception is java.io.FileNotFoundException: class path resource [test01.xml] cannot be opened because it does not exist    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)...

更新

XML 文件与类文件位于同一文件夹中。从getResource()看到就可以看出。

最佳答案

我不太明白你在问什么,但你试过了吗:

new ClassPathXmlApplicationContext("classpath*:test01.xml");

这将在所有类路径中搜索 test01.xml。您可以在 Spring resources 中阅读更多相关信息文档页面。

关于java - 如何将本地文件名传递给 ClassPathXmlApplicationContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com