Chinaunix首页 | 论坛 | 博客
  • 博客访问: 419669
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1712
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-09 10:51
文章分类

全部博文(22)

文章存档

2016年(3)

2015年(6)

2014年(1)

2013年(12)

我的朋友

分类: Java

2015-01-04 13:45:45

    最近在编写代码过程中遇到了打包好的jar包在读取配置文件时找不到文件的问题,结果试了很多方法。有些方法在IDE环境下可以正常读取配置文件,但是打包后将jar包放在服务器上就会出现找不到配置文件的异常。有时打开jar还会发现配置文件没有在jar里,所以问题应该是两个问题,一个是配置文件没有加载到jar里。二是真的找不到配置文件
    1. 配置文件没有加载到jar里
    将java工程打包成可执行的jar时,根目录下的配置文件都不会装载到jar里。但是可以装在根目录下某个文件夹里的properties文件。所以可以在项目根目录下新建一个config的文件,里面放置项目需要的一系列配置文件
    2. 读取配置文件
    读取配置文件的方法有很多,常见的如下:
    1)我们加载log4j.properties一般使用的是PropertyConfigurator.configure("log4j.properties");,如果我们打开configure方法就会发现,里面使用的是FileInputStream类来加载log4j.properties,而此时log4j.properties是放在项目根目录下。
    2)也可以使用ResourceBundle bundle = ResourceBundle.getBundle("config/resconfig");,使用这种方式会遇到中文问题。当配置文件中有中文或者中文符号时,读取出来的数据就会出现乱码,因为ResourceBundle在读取properties文件时统一使用iso8859-1编码。解决办法一是在使用keyValue时,进行编码转换,String value = new String(bundle.getString(key).getBytes("ISO-8859-1"), "XXX"); 二是,将*.properties转换成为unicode形式,但是我们一般创建配置文件都是使用UTF-8格式编码。
    3)使用流的方式读取,就想log4j封装的方法一样,但是要保证配置文件放在根目录下的某个文件夹下
    Properties prop=new Properties();
    prop.load(new InputStreamReader(ChiqEPGTask.class.getClassLoader().getResourceAsStream("config/channel.properties"), "UTF-8"));


    综上,配置文件存放地址---根目录下某个文件夹(config)下;
              读取方式使用字节流形式。

阅读(3984) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~