guobosheng
2008-09-01 22:04
浏览 218
已采纳

偶是Spring新手,做试验的时候遇到了点问题(关于加载配置文件),请大虾们不吝赐教!

配置文件:[b]PropertyEditorBeans.xml[/b]
[code="xml"]<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="customEditorConfigurer"
    class="org.springframework.beans.factory.config.CustomEditorConfigurer">
    <property name="customEditors">
        <map>
            <entry key="com.gbsc.propertyeditor.ExoticType">
                <bean
                    class="com.gbsc.propertyeditor.ExoticTypeEditor">
                    <property name="format" value="upperCase" />
                </bean>
            </entry>
        </map>
    </property>
</bean>

<bean id="dependsOnExoticType"
    class="com.gbsc.propertyeditor.DependsOnExoticType">
    <property name="type" value="aNameForExoticType" />
</bean>

[/code]

测试文件:[b]PropertyEditorMain.java[/b]

[code="java"]package com.gbsc.propertyeditor;

import org.springframework.beans.factory.config.CustomEditorConfigurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
//import org.springframework.core.io.FileSystemResource;

public class PropertyEditorMain {

public static void main(String[] args) {

//我猜问题应该是出在这里,不知道对不对
ClassPathResource resource = new ClassPathResource
("com.gbsc.propertyeditor.PropertyEditorBeans.xml");
//用FileSystemResource时没有任何问题。
// FileSystemResource resource = new FileSystemResource
// ("PropertyEditorBeans.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);

    CustomEditorConfigurer config = (CustomEditorConfigurer)factory.getBean
        ("customEditorConfigurer");
    config.postProcessBeanFactory(factory);

    DependsOnExoticType dependsOnExoticType = (DependsOnExoticType)factory.getBean
        ("dependsOnExoticType");
    dependsOnExoticType.display();
}

}
[/code]

报错信息:Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com.gbsc.propertyeditor.PropertyEditorBeans.xml]; nested exception is java.io.FileNotFoundException: class path resource [com.gbsc.propertyeditor.PropertyEditorBeans.xml] cannot be opened because it does not exist

详细的报错信息如下:
log4j:WARN No appenders could be found for logger (org.springframework.util.ClassUtils).
log4j:WARN Please initialize the log4j system properly.
[b][i]Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com.gbsc.propertyeditor.PropertyEditorBeans.xml]; nested exception is java.io.FileNotFoundException: class path resource [com.gbsc.propertyeditor.PropertyEditorBeans.xml] cannot be opened because it does not exist[/i][/b]
Caused by: java.io.FileNotFoundException: class path resource [com.gbsc.propertyeditor.PropertyEditorBeans.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:135)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:307)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:290)
at org.springframework.beans.factory.xml.XmlBeanFactory.(XmlBeanFactory.java:73)
at org.springframework.beans.factory.xml.XmlBeanFactory.(XmlBeanFactory.java:61)
at com.gbsc.propertyeditor.PropertyEditorMain.main(PropertyEditorMain.java:16)

不知道是哪里出了问题呢?请大虾们不吝赐教!
[b]问题补充:[/b]
配置文件是放在src下面的,其它类都在src\com\gbsc\propertyeditor下面。
我的classpath是:.;D:\Program Files\Java\jdk1.6.0_02\lib;
[b]问题补充:[/b]
我这个只是个Java项目,没有Web项目里像WEB-INF/classes这种目录的。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • iteye_13779 2008-09-01 22:41
    已采纳

    从你的写法看PropertyEditorBeans.xm是在类路径里,只需写ClassPathResource resource = new ClassPathResource ("PropertyEditorBeans.xml"); 就好了

    点赞 打赏 评论
  • DragonOneBlue 2008-09-01 22:38

    你的文件是放在哪里的
    从错误来看是没有找到你的配置文件
    你如果是用ClassPathResource的话,spring的文件搜索是从classpath开始找,如果你放在包的最外面,
    比如你的文件结构是classes/com/gbsc/propertyeditor
    那你就放在classes下面就好了,然后new ClassPathResource("PropertyEditorBeans.xml");当然你也可以放在包的其他位置,指明位置就可以了。
    FileSystem的话,
    搜索会从你的项目的根目录开始,比如你的结构是spring/WEB-INF/classes,那么spring会从spring开始搜索。

    点赞 打赏 评论
  • iteye_18036 2008-09-01 22:49

    放到WEB-INF/classes下就好了

    点赞 打赏 评论

相关推荐 更多相似问题