Java获取系统环境变量的方法

本文介绍了在Java中获取系统环境变量的三种步骤:通过System.getProperty(),通过ServerProperties获取,以及使用System.getenv()方法。这些方法帮助开发者读取和使用运行时环境信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中获取环境变量:

STEPS:
1. Try to get environment from JVM system property
m_env = System.getProperty(“env”);
2. Try to get environment from file "server.properties"
m_env = m_serverProperties.getProperty(“env”);
3. Try to get environment from OS environment variable
m_env = System.getenv(“ENV”);

public class EnvUtil {

    private static final String SERVER_PROPERTIES_LINUX = "/etc/sys_env.ini";
    private static final String SERVER_PROPERTIES_WINDOWS = "C:/opt/settings/server.properties";

    private static Properties m_serverProperties = new Properties();
    private static String m_env;

    private static class LazyHolder{
        // final 为了防止内部误操作,cglib的代理模式以子类方式实现,可能会修改该值
        private static final EnvUtil INSTANCE = new EnvUtil();
    }

    // 提供静态方法获取实例
    // final 确保别人不能覆盖
    public static final EnvUtil getInstance() {
        return LazyHolder.INSTANCE;
    }

    private EnvUtil() {
        initialize();
    }

    public String getEnv(){
        return m_env;
    }
    
    private static void initialize(){
        try {
            String path = Utils.isOSWindows() ? SERVER_PROPERTIES_WINDOWS : SERVER_PROPERTIES_LINUX;

            File file = new File(path);
            if (file.exists() && file.canRead()) {
                FileInputStream fis = new FileInputStream(file);
                initialize(fis);
            }else{
                initialize(null);
            }

        } catch (Throwable ex) {

        }
    }

    private static void initialize(InputStream in) {
        try {
            if (in != null) {
                try {
                    m_serverProperties.load(new InputStreamReader(new BOMInputStream(in), StandardCharsets.UTF_8));
                } finally {
                    in.close();
                }
            }
            initEnvType();
        } catch (Throwable ex) {
            log.error("获取系统环境变量错误:"+ex.getMessage());
        }
    }

    private static void initEnvType() {

        // 1. Try to get environment from JVM system property
        m_env = System.getProperty("env");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        // 2. Try to get environment from file "server.properties"
        m_env = m_serverProperties.getProperty("env");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        // 3. Try to get environment from OS environment variable
        m_env = System.getenv("ENV");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        m_env = null;
        // 4. return environment to null.
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值