You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本将.property文件传入Java类?

嘿,我来分享几个靠谱的方案,帮你在Shell脚本里把服务器上的.properties文件传给你的Java程序,都是实际项目里常用的做法:

方法1:通过Java系统属性传递(最常用)

这种方式灵活度很高,你可以在启动Jar包时通过-D参数指定配置文件的绝对路径,然后在Java代码里读取这个系统属性。

Shell脚本示例

#!/bin/bash
# 替换成你服务器上.properties文件的实际绝对路径
PROP_FILE="/opt/app/config/server-config.properties"
# 启动Jar包,通过-D参数传递配置文件路径
java -Dconfig.file="$PROP_FILE" -jar your-application.jar

Java代码读取示例

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class AppMain {
    public static void main(String[] args) {
        // 获取通过-D传入的配置文件路径
        String propFilePath = System.getProperty("config.file");
        Properties props = new Properties();
        
        try (InputStream inputStream = new FileInputStream(propFilePath)) {
            props.load(inputStream);
            // 读取具体配置项,比如数据库地址
            String dbUrl = props.getProperty("database.url");
            System.out.println("数据库地址:" + dbUrl);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
方法2:将配置文件加入类路径

如果你的配置文件可以放在固定的目录下,也可以把该目录加入Java的类路径,然后直接从类路径读取配置文件。

Shell脚本示例

#!/bin/bash
# 假设配置文件在./config目录下,将该目录和Jar包一起加入类路径
java -cp "your-application.jar:/opt/app/config" com.your.package.AppMain

Java代码读取示例

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class AppMain {
    public static void main(String[] args) {
        Properties props = new Properties();
        // 从类路径读取配置文件(此时config.properties要在类路径目录下)
        try (InputStream inputStream = AppMain.class.getClassLoader().getResourceAsStream("config.properties")) {
            props.load(inputStream);
            String apiKey = props.getProperty("api.key");
            System.out.println("API密钥:" + apiKey);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
方法3:通过命令行参数传递

直接把配置文件路径作为命令行参数传给Java程序的main方法,适合简单场景。

Shell脚本示例

#!/bin/bash
PROP_FILE="/opt/app/config/server-config.properties"
# 将配置文件路径作为参数传给Jar包
java -jar your-application.jar "$PROP_FILE"

Java代码读取示例

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class AppMain {
    public static void main(String[] args) {
        // 检查是否传入了参数
        if (args.length == 0) {
            System.err.println("请传入配置文件路径作为参数");
            System.exit(1);
        }
        
        String propFilePath = args[0];
        Properties props = new Properties();
        
        try (InputStream inputStream = new FileInputStream(propFilePath)) {
            props.load(inputStream);
            String logLevel = props.getProperty("logging.level");
            System.out.println("日志级别:" + logLevel);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

小贴士:如果你的配置文件路径包含空格,一定要用双引号把路径包裹起来(比如"$PROP_FILE"),避免Shell解析出错哦!

内容的提问来源于stack exchange,提问作者Sambit Samal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:41:33