gpt4 book ai didi

java - 如何在spring中获取访问配置文件的路径

转载 作者:行者123 更新时间:2023-11-29 08:54:13 26 4
gpt4 key购买 nike

我编写了一个 Spring 程序,其中以下类、接口(interface)和 xml 文件位于不同的包中。我使用 Eclipse Kepler。

file structure

选择客户端.java

package com.rajeev.spring.action;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import com.rajeev.spring.DAOI.Select;

/**
* @author rajeev
*
*
*/
public class SelectClient {

/**
* @param args
*/
public static void main(String[] args) {
String path=System.getProperty("user.dir");
System.out.println(path+"/src/com/rajeev/spring/DAOImpl/SelectCfg.xml");
Resource resource=new ClassPathResource(path+"/src/com/rajeev/spring/DAOImpl/SelectCfg.xml");
XmlBeanFactory beanFactory=new XmlBeanFactory(resource);
Object object=beanFactory.getBean("sb");
Select select=(Select)object;
System.out.println("emp name is:"+select.fetchName(101));
}

}

问题是当我执行 SelectClient.java 时,出现以下错误

E:\javahyd\eclipse\Spring_DataSource_Object_Inject/src/com/rajeev/spring/DAOImpl/SelectCfg.xmlJan 17, 2014 11:41:43 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [E:/javahyd/eclipse/Spring_DataSource_Object_Inject/src/com/rajeev/spring/DAOImpl/SelectCfg.xml]Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [E:/javahyd/eclipse/Spring_DataSource_Object_Inject/src/com/rajeev/spring/DAOImpl/SelectCfg.xml]; nested exception is java.io.FileNotFoundException: class path resource [E:/javahyd/eclipse/Spring_DataSource_Object_Inject/src/com/rajeev/spring/DAOImpl/SelectCfg.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)    at org.springframework.beans.factory.xml.XmlBeanFactory.(XmlBeanFactory.java:78)    at org.springframework.beans.factory.xml.XmlBeanFactory.(XmlBeanFactory.java:66)    at com.rajeev.spring.action.SelectClient.main(SelectClient.java:26)Caused by: java.io.FileNotFoundException: class path resource [E:/javahyd/eclipse/Spring_DataSource_Object_Inject/src/com/rajeev/spring/DAOImpl/SelectCfg.xml] cannot be opened because it does not exist    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)    ... 4 more

上面的异常,是由于路径。当我在 run(windows+r) 中使用相同的路径时,它正在打开特定的文件。我不想让我的配置文件脱离任何包。

最佳答案

ClassPathResource 用于引用类路径中资源的路径。 ClassPathResource中传递的path参数指的是类路径中的绝对路径。所以,使用

Resource resource=new ClassPathResource("com/rajeev/spring/DAOImpl/SelectCfg.xml");

尝试使用FileSystemResource来提及文件系统中的绝对路径

关于java - 如何在spring中获取访问配置文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21179153/

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