一個普通的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文件讀取,就可以了。
備注:對於其他的一些配置文件讀取,也要相應修改,例如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);