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

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

Java读写.properties文件实例,解决中文乱码问题

一般使用到properties配置文件,一般都是在spring项目里面,直接由框架帮你读,当然,你也得考虑到编码的问题。 但是现在要是要求使用Java直接读写properties文件,就发现很多的问题...
  • qq_27093465
  • qq_27093465
  • 2017年04月25日 19:32
  • 11463

properties文件第一行请空出来

问题描述: 项目启动的时候, 报出了找不到properties文件中的一个key的错误, 具体错误信息如下 java.util.MissingResourceException: Can't find...
  • pansanday
  • pansanday
  • 2015年11月18日 00:14
  • 1386

JAVA读取properties时路径注意问题,

先来看看建立的测试工程目录 属性文件我们放在包test下,当然了,一般在实际开发过程中不建议这样做,建立把属性文件放在src目录下,现在放在包下主要是便于了解路径的问题。 下面来看...
  • lu8000
  • lu8000
  • 2013年05月28日 08:15
  • 31147

HDU - 1754 - I Hate It (线段树 - 区间最值)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...
  • u014355480
  • u014355480
  • 2015年03月18日 20:05
  • 618

左移位运算符>>、带符号的右移位运算符>>

移位运算符也针对二进制的“位”,它主要包括:左移位运算符(>>)、带符号的右移位运算符(>>)。   1.左移运算符 左移运算符用“ public class data17 { ...
  • plpldog
  • plpldog
  • 2017年11月05日 16:56
  • 242

java读取properties文件

Java读取properties文件的方法比较多,网上我最多的文章是“Java读取properties文件的六种方法”,我看了好多的文章,在读到“博客之星-熔岩”的“Java读取properties文...
  • bao19901210
  • bao19901210
  • 2014年04月04日 13:44
  • 1152

Properties配置文件读取不到

那些年踩过的坑之配置文件 1.发布到服务器的项目配置文件用记事本打开之后,重启服务器之后发现读取不到properties文件第一行的值。发现是因为编码格式发生改变而造成的的。点开查看详情...
  • weixin_39913200
  • weixin_39913200
  • 2017年12月07日 17:16
  • 123

HDU 2059龟兔赛跑(多段决策dp)

龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • u013555159
  • u013555159
  • 2016年08月10日 19:26
  • 200

纯代码代码创建textView 输入文字时出现文字不从第一行显示问题 以及textField的初始化

纯代码代码创建textView  输入文字时出现文字不从第一行显示问题     默默的查了一下,原来是controller的影响,但是从storyboard 拖得控件就不会这样,修改一下控制器的属性...
  • matiji66
  • matiji66
  • 2015年12月04日 16:09
  • 444

五种方式让你在java中读取properties文件内容不再是难题

一、背景   最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题。就借此机会把Spring+Spri...
  • qq_26562641
  • qq_26562641
  • 2017年01月03日 09:23
  • 4021
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:properties文件第一行请空出来
举报原因:
原因补充:

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