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包与配置文件的写法的更多相关文章
- LR java Vuser 相关依赖JAR包,配置文件处置方法
JAR包,配置文件依赖有两种处理方法 1.放到工程文件夹下(lr脚本目录),不支持负载机调用 2.F4 classpath设置加载jar包和配置文件的整个文件夹,麻烦些,但支持负载机调用(与http ...
- 使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)
从网上看过许多打jar包的例子,大多是将配置文件打进jar包的.经过本人一番研究,终于搞清楚了怎样将jar包的配置文件外置. 废话不说,直接上spring的pom.xml的配置文件. <proj ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- Spring环境搭建之:导入jar包、配置文件名称及放置位置
Spring环境搭建之:导入jar包.配置文件名称及放置位置 现在项目开发中spring框架应用的还是比较多的,自己用的还不太熟练,每次用的时候总配置半天,总有些配置弄错,就找个时间总结以下,方便以后 ...
- java jar包解析:打包文件,引入文件
java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...
- linux 下检查java jar包 程序是否正常 shell
linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...
- linux 下启动java jar包 shell
linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...
- linux 下停止java jar包 shell
linux 下停止java jar包 shell http://injavawetrust.iteye.com #!/bin/sh APP_HOME=/home/ap/injavawetrust/ba ...
- application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用
一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...
随机推荐
- Error Code: 1030. Got error -1 from storage engine
这个问题通常是数据库可以建表,旧表可以插入数据,正常:可是新表无法插入数据,无法改名等操作: 先从文件权限找方法,没法解决: 在网上搜了一通,大家都说的磁盘满了,但是我们的磁盘还空着呢! 后来,发现! ...
- mysql 创建函数问题
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declar ...
- jQuery -> 删除/替换DOM元素
删除 删除操作很easy,直接在结果集后链式调用remove()方法就可以. 比如.要删除下面html脚本中全部的a元素.直接通过 $('a'.remove(); 就能够做到了. <h3> ...
- javascript解析JSON---将字符串转换为json对象
<script type="text/javascript"> var str = '{"name":"jack", ...
- Java 8 Streams filter examples
1. Streams filter() and collect() package com.mkyong.java8; import java.util.Arrays;import java.util ...
- Vue-cli / webpack 加载静态js文件的方法
一.html-webpack-plugin 编译 1.只需要在入口处定义一个chunks,如我们定义一个fuck模块 entry: { app: './src/main.js', fuck: ['./ ...
- oracle PLSQL 多结果集嵌套循环处理优化
oracle多结果集嵌套循环处理优化 --性能差 begin for a in (select id,name,sex,idcard from people) loop for b in (selec ...
- [svc]centos6使用chkconfig治理服务和其原理
centos6开机启动级别 $ cat /etc/inittab ... # 0 - halt (Do NOT set initdefault to this) # 1 - Single user m ...
- nodepad++ 正则 替换
(?<k1>.*?)\=(?<k2>.*?); cookie.Add(new CookieList() { Key = "\1", Value = &quo ...
- Android4.4r1(KitKat)源码下载地址
未经验证 http://blog.csdn.net/gaojinshan/article/details/14228737 百度云盘保存了大量android源码,没有经过验证,并不能保证能够正常编译, ...