开发者社区> 祖师爷> 正文

springboot 运行 jar 包读取外部配置文件

简介: springboot 运行 jar 包读取外部配置文件
+关注继续查看

 案例:本文主要描述linux系统执行jar包读取jar包同级目录的外部配置文件

方法一:相对路径设置配置文件

(1)在jar包同级目录创建配置文件conf.properties并写入配置数据:

confData=data

1

(2)开始写入自动化测试代码


public class Test{
    public String getData() throws IOException {
        //读取配置文件 from fhadmin.cn
        Properties properties = new Properties();
        File file = new File("conf.properties");
        FileInputStream fis = new FileInputStream(file);
        properties.load(fis);
        fis.close();
        //获取配置文件数据
        String confData = properties.getProperty("confData");
        System.out.println(confData);
    }
}

image.gif

(3)执行jar包

java -jar jarNanexxx

image.gif

方法二:绝对路径设置配置文件

解决问题:使用相对路径的方法在jar包同级目录手动执行jar包时没有问题,但使用linux系统的crontab文件定时调度时报错,原因:因为我们手动执行某个脚本时,是在当前shell环境下进行的,程序能找到环境变量;而系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在crontab文件中指定任务运行所需的所有环境变量,或者在程序中使用绝对路径。

(1)在jar包同级目录创建配置文件conf.properties并写入配置数据:

confData=data

image.gif

(2)开始写入自动化测试代码


public class Test{
    public String getData() throws IOException {
       //获取jar包同级目录 from fhadmin.cn
        String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
        String[] pathSplit = path.split("/");
        String jarName = pathSplit[pathSplit.length - 1];
        String jarPath = path.replace(jarName, "");
        String pathName=jarPath+"minhang.properties";
        System.out.println("配置文件路径:"+jarPath);
        //读取配置文件
        Properties properties = new Properties();
        File file = new File(pathName);
        FileInputStream fis = new FileInputStream(file);
        properties.load(fis);
        fis.close();
        //获取配置文件数据
        String confData = properties.getProperty("confData");
        System.out.println(confData);
    }
}

image.gif

(3)执行jar包

java -jar jarNanexxx

image.gif


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【技术贴】​用程序调用福昕阅读器打开pdf文件|解决C:\Program files不是内部或外部命
【技术贴】调用福昕阅读器的命令行方式打开pdf文件|解决C:\Program files中间有空格 不是内部或外部命令。   一 首先是解决路径中含有空格的这个问题,你可以把它当做环境变量写进path里面,或者像我一样,在路径外面套上双引号,如图。
998 0
VMware备份文件即时恢复功能全新发布
HBR的VMware备份/恢复都是整机维度的,但是有些时候,我们或许只想要恢复备份中的某个文件,这样在恢复一个完整的虚拟机就有点高射炮打蚊子了。我们能不能直接从备份的数据里捞出来想要的文件呢?文件级恢复的功能便应运而生。
231 0
Spring Boot读取配置文件的几种方式
Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。
604 0
外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)
外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)
613 0
SpringBoot上传和下载文件(二十七)上
SpringBoot上传和下载文件(二十七)上
46 0
ASP.NET Core轻松入门Bind读取配置文件到C#实例
首先新建一个ASP.NET Core空项目,命名为BindReader 然后 向项目中添加一个名为appsettings.json的json文件,为什么叫appsettings呢?  打开Program.
923 0
+关注
祖师爷
java框架www.fhadmin.cn
210
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载