java jar包与配置文件的写法

Posted 牵牛花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java jar包与配置文件的写法相关的知识,希望对你有一定的参考价值。

一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该jar包,出错,原工程中properties文件读取代码如下:

 InputStream in = SystemConfig.class.getResourceAsStream("/config.properties");
 FileInputStream in = new FileInputStream(rootPath+"/config.properties");

     上网搜了下class.getResource方式读取配置文件时,在eclipse中运行是没有问题的。将该类打包成jar包执行,如果配置文件没有一起打包到该jar包中,文件查找的路径就会报错。但是对于配置文件,我们一般不希望将其打包到jar包中,而是一般放到jar包外,随时进行配置。修改方式如下:

String rootPath = System.getProperty("user.dir").replace("\\\\", "/");
FileInputStream in = new FileInputStream(rootPath+"/config.properties");

     首先程序获取程序的执行路径,也就是你打包后的jar存放路径,然后找到该路径下的config.properties文件读取,就可以了。

 

 

String rootPath = System.getProperty("user.dir").replace("\\\\", "/");
FileInputStream in = new FileInputStream(rootPath+File.separator+"kafkaSinkConfig.properties");
 
package my.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
* Created by lq on 2017/9/3.
*/
public class PropertiesUtils {

public static Properties getPropertiesFromUserDir(String propfile){
Properties properties = new Properties();
String rootPath = System.getProperty("user.dir");
FileInputStream in = null;
try {
in = new FileInputStream(rootPath + File.separator + propfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return properties;
// TOPIC = (String) properties.get("topic");//
}

public static void main(String[] args) {
System.out.println(getPropertiesFromUserDir("topic.cfg").stringPropertyNames());
}
}

 

 

备注:对于其他的一些配置文件读取,也要相应修改,例如mybatis读取配置文件,默认方式是

java.io.Reader reader = Resources.getResourceAsReader("Configuration.xml");
factory = new SqlSessionFactoryBuilder().build(reader);

如果打包到jar运行,Configuration.xml没有打包进去,也会报错,统一修改成

复制代码
String rootPath = System.getProperty("user.dir").replace("\\\\", "/");
java.io.Reader reader = new FileReader(rootPath+"/Configuration.xml");
factory = new SqlSessionFactoryBuilder().build(reader);

出自博客:http://www.cnblogs.com/king1302217/p/5434989.html
复制代码

以上是关于java jar包与配置文件的写法的主要内容,如果未能解决你的问题,请参考以下文章

可执行jar包与依赖jar包

java打jar包与找不到依赖包详解

将项目打包成War包与打包成Jar包的区别及应用场景

jar 包与 war 包区别

包与模块

Apache Hadoop压缩包与Eclipse结合,导入jar包归整总结