最近使用springboot部署springcloud项目,发现pom引用本地其他模块的时候,其他模块会读取本地的properties配置文件,使用FileInputStream读取失败,会报错:java.io.FileNotFoundException: file: jar!/BOOT-INF/lib/ (没有那个文件或目录)
使用properties.load(Config.class.getResourceAsStream("/init.properties"));可以正常读取。
特以此为记:
参考:https://www.cnblogs.com/go4mi/p/8124668.html
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"
) 获得项目的绝对路径,然后拼装配置文件的路径。