事情发生在一个乌云蔽日的下午、
原工程放在服务器(系统是:Windows Server 2003)
神马问题也木有、然后俺一不小心用记事本打开了java的.properties文件
修改了数据源的一些配置、重启后、突然给出如下错误:

信息: Initializing Spring root WebApplicationContext
2012-5-9 16:17:36 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'DataSource' defined in file [D:\apache-tomcat-6.0.29\webapps\module-infobank\WEB-INF\classes\com\chinaboxun\infobank\config\applicationContext-infobank-core.xml]: Could not resolve placeholder 'jndi.name'
当时我就晕了、肿么会找不到jndi.name呢!
属性文件内容跟applicationContext-infobank-core.xml文件内容如下:jndi.name=java:/comp/env/jdbc/infobank
jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.11.0.185:1521:CRM
jdbc.username=....不好说....
jdbc.password=....不好说....
dbcp.initialSize=10
dbcp.maxActive=100
dbcp.maxIdle=10
dbcp.minIdle=1
dbcp.maxWait=5000<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">          
     <property name="location" value="classpath:com/chinaboxun/infobank/config/infobank.properties"/>          
</bean><bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${jndi.name}"/>
</bean>
于是满世界的google、baidu到最后当然是木有结果了!
我说我本地又是OK的、以前服务器也是OK的!
当时就觉得是属性文件出了什么问题、难道单词错了、仔细对照、硬是没发现!
后来、直接把本地的属性文件改好复制到服务器上去、这样就没错了!
我很疑惑、希望大牛解惑!
这是什么原因呢、为什么用记事本修改过后、Tomcat6就不认识它了呢???

解决方案 »

  1.   

    这个没关系啊、、、我刚试了、、我的tomcat就认得!~~~
    你的情况 坐等大牛吧
      

  2.   

    window的记事本默认保存的编码格式是ansi码 如果你的项目是utf-8, 你可以另存为 选择utf-8 无bom格式 在试试
      

  3.   


    这种情况也考虑过、试过了、不过没有效果!
    好像还不是这个原因呢!我刚刚试过了一下

    信息: Initializing Spring root WebApplicationContext
    2012-5-10 9:54:43 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'DataSource' defined in file [D:\apache-tomcat-6.0.29\webapps\module-infobank\WEB-INF\classes\com\chinaboxun\infobank\config\applicationContext-infobank-core.xml]: Could not resolve placeholder 'jndi.name'

    马上就跟我翻脸!
      

  4.   

    于是、用了3楼的方法、另存为、编码格式为UTF-8!
        它继续翻脸!
      我就用老招数对付它、从本地拷贝进来、它又乖乖的了!
      

  5.   

    properties 文件当编码不对时会出现丢内容,我遇到过。
    你这应该是编码的错。
      

  6.   

    Properties 默认使用ISO8859-1
    除非你用InputStreamReader指定具体的编码如果不想改程序,jdk\bin下面可以找到一个native2ascii.exe
    用native2ascii.exe -encoding gbk c:\11.properties c:\22.properties的形式,把原来的11.properties处理一下,再拿去部署