properties文件第一行请空出来

原创 2015年11月18日 00:14:28

问题描述:

项目启动的时候, 报出了找不到properties文件中的一个key的错误, 具体错误信息如下

java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle. key driverClass
	at java.util.ResouceBundle.getObject(ResouceBundle.java:374) ~[na:1.6.0_38]
	at java.util.ResouceBundle.getString(ResouceBundle.java:334) ~[na:1.6.0_38]
	...
配置文件jdbc.properties如下:

driverClass = oracle.jdbc.driver.OracleDriver
userName = admin
password = 123
明明是有这个driverClass的key的, 却仍报错. 搜索了N个网站, 终于找到了问题答案: 编码!

Properties类API(http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html)中提到如下一句话

The load(Reader) / store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream) / store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes as defined in section 3.3 of The Java™ Language Specification; only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.

大体意思是, properties文件是基于行来读取和存储键值对的, 而期望的输入/输出流字符编码是ISO 8859-1. 那些不能使用该方式存储的字符集呢, 需要使用native2ascii命令对property文件进行转码.

由于我的这个配置文件中有中文注释, 所以我使用了UTF-8的编码方式存储, 使用UTF-8存储的坏处就是会多出一些特殊字符(乱码); 使用UE在16进制下查看发现, driverClass变成了"锘縟riverClass", 当程序中再次查找driverClass时, 就会报错, 找不到key(driverClass)


解决方案一:

仍然使用UTF-8编码方式, 将第一行给空出来


再次使用UE查看, 虽然仍有乱码, 但是配置项driverClass已经正常了



解决方案二:

按照API上的指示, 使用ISO 8859-1的编码方式存储jdbc.properties文件, 中文用/u开头的unicode方式保存

如: country = 中国, 改成: country = \u4E2D\u56FD


感谢万能的谷歌, 指引我找到方向.

参考文章: http://stackoverflow.com/questions/24810028/why-does-java-ignore-the-first-line-of-a-properties-file

版权声明:本文为博主原创文章,未经博主允许不得转载。

properties配置文件中空格引发的血案

今天翻起以前空闲时候做的项目,刚起服务的时候就遇到了问题,直接报连不到数据库,  Error querying database.  Cause: org.springframework.jdbc....

IntelliJ IDEA打开Maven项目,所有依赖红名,不可用,简单解决方案

问题来源最近在看SpringBoot实战时,想要运行一下书中的源码,用IntelliJ IDEA打开项目过后,发现在maven依赖树中所有的依赖都是红名的,不可用,项目没有了依赖,没办法运行。截图如下...

第一行代码-6.2 文件存储

文件存储是安卓三种持久化技术(包括文件存储、SharedPreferences存储和数据库存储)的其中一种,也是最直接最简单的一种,下面来看看它是怎么实现的: 1、将数据存储到文件中   下面通过...

《第一行代码》第六章 文件存储项目Test

编者按:刚开始学习安卓,比较基础。从头到尾看郭神的书,一开始也是什么的都不会,比较着急。很多的方法什么的,代码什么的,import过程什么的,老是出错。然而回过头来看看,原来这么简单!很多人都是从这本...

第一行安卓代码——播放多媒体文件8.4.1

8.4.1播放音频 在安卓中播放较长的音频文件,如背景音乐等都是通过MediaPlayer类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使播放音乐的工作变得非常简单。下面是Medi...

hibernate.properties配置文件

  • 2017年12月07日 22:15
  • 15KB
  • 下载

读取properties配置文件所用jar

  • 2017年11月15日 14:38
  • 1.01MB
  • 下载

Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决

今天导入文件的时候,出现?,经过核查是UTF-8那个BOM的问题,最后经过查找,找了一个比较好的方法解决。 使用一个更强大点的工具类(可以支持UTF-8/UTF-16LE/UTF-16BE/UT...

使用Properties类来读取配置文件

  • 2017年10月27日 20:36
  • 227KB
  • 下载

properties资源文件安装方式

  • 2015年06月02日 12:11
  • 350KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:properties文件第一行请空出来
举报原因:
原因补充:

(最多只允许输入30个字)