在jar包在读取配置是找不到文件

来源:互联网 发布:什么软件下歌不要钱 编辑:程序博客网 时间:2024/04/30 09:06

打包好的jar包在读取配置文件时找不到文件的问题,结果试了很多方法。有些方法在IDE环境下可以正常读取配置文件,但是打包后将jar包放在服务器上就会出现找不到配置文件的异常。有时打开jar还会发现配置文件没有在jar里,所以问题应该是两个问题,一个是配置文件没有加载到jar里。二是真的找不到配置文件

读取jar包中的资源用下面的方式:

InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");  
BufferedReader br=new BufferedReader(new InputStreamReader(is)); 

其中/resource/res.txt是jar包中的资源文件。
this.getClass()是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"));

    java 程序打包为jar发布后,读取配置文件路径出错 ,怎样获取配置文件路径?
    把配置文件ccc.xml放到编译路径,如src/com.aaa.aa下面,然后再根据
    String rootPath=Xxxx.class.getResource("/").getPath();
    获取到编译的根路径,配置文件的地址就是rootPath+"com/aaa/aa/ccc.xml"

0 0
原创粉丝点击