jar包不能读取包内配置文件的问题

350 阅读1分钟

最近使用springboot部署springcloud项目,发现pom引用本地其他模块的时候,其他模块会读取本地的properties配置文件,使用FileInputStream读取失败,会报错:java.io.FileNotFoundException: file:  jar!/BOOT-INF/lib/  (没有那个文件或目录)

使用properties.load(Config.class.getResourceAsStream("/init.properties"));可以正常读取。

特以此为记:

参考:www.cnblogs.com/go4mi/p/812…

public class Config {

 

  ``private static Properties properties;

  ``private static Logger logger = Logger.getLogger(Config.``class``);

  ``static {

   ``try {

    ``PropertyConfigurator.configure(System.getProperty(``"user.dir"``)

      ``+ ``"/config/log4j.properties"``);

    ``properties = ``new Properties();

    ``// 读取SRC下配置文件 --- 属于读取内部文件

    ``// properties.load(Config.class.getResourceAsStream("/init.properties"));

    ``// 读取系统外配置文件 (即Jar包外文件) --- 外部工程引用该Jar包时需要在工程下创建config目录存放配置文件

    ``String filePath = System.getProperty(``"user.dir"``)

    ``+ ``"/config/init.properties"``;

    ``InputStream in = ``new BufferedInputStream(``new FileInputStream(filePath));

    ``properties.load(in);

   ``} ``catch (IOException e) {

             ``logger.error(``"读取配置信息出错!"``, e);

   ``}

  ``}

  ``public static String getObject(String prepKey) {

            ``return properties.getProperty(prepKey);

  ``}

 

  ``public static void main(String[] agrs) {

           ``logger.info(Config.getObject(``"testsql"``));

  ``}

 ``}

 

System.getProperty(``"user.dir"``) 获得项目的绝对路径,然后拼装配置文件的路径。