导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:306
阅读量:767799
访问量:73343
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
博文->>首页 博主的更多博文>>
由${druid.url}引发的“血案”:IllegalArgumentException: Could not resolve placeholder 'druid.url'
Tags : druid,文件编码发表时间: 2016-10-15 13:28:57
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
比如: 转自:Su的技术博客  原文地址:

Spring项目里面用到阿里数据库连接池:druid,按照正常配置,出现了:

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean def
inition with name 'dataSource' defined in class path resource [applicationContex
t.xml]: Could not resolve placeholder 'druid.url' in string value "${druid.url}"
; nested exception is java.lang.IllegalArgumentException: Could not resolve plac
eholder 'druid.url' in string value "${druid.url}"
        at org.springframework.beans.factory.config.PlaceholderConfigurerSupport
.doProcessProperties(PlaceholderConfigurerSupport.java:211)
        at org.springframework.beans.factory.config.PropertyPlaceholderConfigure
r.processProperties(PropertyPlaceholderConfigurer.java:222)
        at org.springframework.beans.factory.config.PropertyResourceConfigurer.p
ostProcessBeanFactory(PropertyResourceConfigurer.java:86)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:265)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:162)
        at org.springframework.context.support.AbstractApplicationContext.invoke
BeanFactoryPostProcessors(AbstractApplicationContext.java:606)

配置文件:druid.properties:

druid.url=jdbc:mysql://127.0.0.1:3307/test
druid.username=root
druid.password=123456

applicationContext.xml:

<!-- 基本属性 url、user、password -->
<property name="url" value="${druid.url}" />
<property name="username" value="${druid.username}" />
<property name="password" value="${druid.password}" />

理论上,应该不会报出那异常,在开发环境上正常,部署到其他win tomcat环境下却爆出来,自己尝试了N种方法,最终才找到问题的缘由。


最后原因也是没想到的。


原因如下:

        竟然是文件保存的编码问题!真的是醉了。。。

        打开查看编码竟然是UTF-8 BOM,但是我本地查看的是UTF-8.这两个到底是什么原因????

       百度知道上有人回答:

      “utf-8+bom比utf-8多了三个字节前缀:0xEF0xBB0xBF,有这三个字节前缀的文本或字符串,程序可以自动判断它为utf-8格式,
      并按照utf-8格式来解析文本或字符串,否则,一个文本或者字符串在未知编码的情况下,需要按照字符编码规范去一个个验证。”
      我自己个人验证的方法:

       在druid.properties上,第一行换行。尝试启动。=》正常

        修改文件编码为UTF-8,没换行。尝试启动。=》正常


     终于真相大白了,厉害了Word的哥!!!

修改文件编码参考图:editplus软件








打赏
打赏
关注公众号
公众号
类别:Java| 阅读(3080)| 赞 (2)
上一篇 : 又见CLOSE_WAIT
评论
暂无评论!
发表评论
昵  称:

验证码:

内  容:

    同时赞一个 赞