一个普通的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包与配置文件的写法的更多相关文章

  1. LR java Vuser 相关依赖JAR包,配置文件处置方法

    JAR包,配置文件依赖有两种处理方法 1.放到工程文件夹下(lr脚本目录),不支持负载机调用 2.F4  classpath设置加载jar包和配置文件的整个文件夹,麻烦些,但支持负载机调用(与http ...

  2. 使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)

    从网上看过许多打jar包的例子,大多是将配置文件打进jar包的.经过本人一番研究,终于搞清楚了怎样将jar包的配置文件外置. 废话不说,直接上spring的pom.xml的配置文件. <proj ...

  3. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  4. Spring环境搭建之:导入jar包、配置文件名称及放置位置

    Spring环境搭建之:导入jar包.配置文件名称及放置位置 现在项目开发中spring框架应用的还是比较多的,自己用的还不太熟练,每次用的时候总配置半天,总有些配置弄错,就找个时间总结以下,方便以后 ...

  5. java jar包解析:打包文件,引入文件

    java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...

  6. linux 下检查java jar包 程序是否正常 shell

    linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...

  7. linux 下启动java jar包 shell

    linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...

  8. linux 下停止java jar包 shell

    linux 下停止java jar包 shell http://injavawetrust.iteye.com #!/bin/sh APP_HOME=/home/ap/injavawetrust/ba ...

  9. application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用

    一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...

随机推荐

  1. 【Linux】关于减号 - 的用途

    管线命令在 bash 的连续处理程序中是相当重要的!另外,在 log file 的分析当中也是相当重要的一环, 所以请特别留意!另外,在管线命令当中,常常会使用到前一个命令的 stdout 作为这次的 ...

  2. linux记录sftp命令

    使用以下配置方法不需要配置chroot. 编辑sshd_config文件 vi /etc/ssh/sshd_config 增加: Subsystem sftp /usr/libexec/openssh ...

  3. [转]利用Docker构建开发环境

    利用Docker构建开发环境 Posted by  makewonder on 2014 年 4 月 2 日   最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境, ...

  4. application配置和profile隔离配置(转)

    前言 github: https://github.com/vergilyn/SpringBootDemo 说明:我代码的结构是用profile来区分/激活要加载的配置,从而在一个project中写各 ...

  5. C# Split() 去除 \r\n 分组

    str为读入的文本string[] ReadText = str.Replace("\r\n", "@").Split('@'); 转自 http://zhid ...

  6. AndroidStudio创建项目时一直处于building“project name”gradle project info的解决办法

    AndroidStudio创建项目,最后一步finish后,一直长时间处于building“project name”gradle project info,界面就一直停留在如图所示: 谷歌自家的产品 ...

  7. SVN配置钩子文件限制提交文件时必须填写更新日志

    进入相应SVN仓库hooks目录,编辑文件pre-commit #!/bin/sh REPOS="$1"TXN="$2" SVNLOOK=/usr/bin/sv ...

  8. category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性

    属性 其实就是get/set 方法.我们可以使用  objc_setAssociatedObject/objc_getAssociatedObject  实现 动态向类中添加 方法 @interfac ...

  9. oozie 常用命令

    1.验证wokflow.xmloozie validate /appcom/apps/hduser0401/mbl_webtrends/workflow.xml 2.提交作业,作业进入PREP状态 o ...

  10. 将视频转换为 HLS(HTTP Live Streaming) 协议格式文件

    就是将视频文件转码(H264+ACC).分片(n个.ts文件).生成列表(.m3u8) 方便网站提供视频播放服务,提升加载速度,节省流量. 1.准备好源视频文件. 2.下载 ffmpeg(http:/ ...