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

如何将shell变量传递到Java代码实现代理配置环境无关性

解决方案

1. 调整Java代码读取环境变量

你可以直接通过Java内置的System.getenv()方法读取Linux系统的环境变量,修改后的代码如下:

import io.restassured.response.Response;
import step_definitions.StepDefinitions;

private Response getCyaraResponse(String cyaraService) {
    try {
        RestAssured.useRelaxedHTTPSValidation();
        // 读取环境变量中的代理配置,未配置时默认不使用代理
        String proxyHost = System.getenv().getOrDefault("HTTP_PROXY_HOST", "");
        String proxyPortStr = System.getenv().getOrDefault("HTTP_PROXY_PORT", "3128");
        int proxyPort = 3128;
        // 校验端口格式合法性
        try {
            proxyPort = Integer.parseInt(proxyPortStr);
        } catch (NumberFormatException e) {
            log.warn("代理端口格式错误,使用默认端口3128");
        }
        // 代理地址不为空时才设置代理
        if (!proxyHost.isBlank()) {
            RestAssured.proxy(proxyHost, proxyPort);
        }
        log.debug("Get URL: " + baseUrl + accountNum + cyaraService);
        Response actualResponse = given().headers("Authorization", keyToken)
                .get(baseUrl + accountNum + cyaraService);
        return actualResponse;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

以上代码默认从HTTP_PROXY_HOST和HTTP_PROXY_PORT两个环境变量读取代理配置,你也可以根据自己的习惯修改环境变量名。如果环境变量没有配置代理地址,代码会自动跳过代理设置,适配不需要代理的运行环境。

2. Shell端传递变量的方法

临时生效(仅对当前启动的Java进程生效)

启动Java程序前直接在命令行前缀变量即可:

HTTP_PROXY_HOST=web-proxyapp.xxxxx-dns.com HTTP_PROXY_PORT=3128 java -jar 你的应用包名.jar

如果是用Maven/Gradle执行测试,同样可以在命令前加变量:

HTTP_PROXY_HOST=web-proxyapp.xxxxx-dns.com HTTP_PROXY_PORT=3128 mvn test

会话级生效(当前Shell窗口所有命令都生效)

先执行export命令设置环境变量:

export HTTP_PROXY_HOST=web-proxyapp.xxxxx-dns.com
export HTTP_PROXY_PORT=3128

之后直接启动Java程序/执行测试命令即可,不需要每次都加前缀。

永久生效(对当前用户所有Shell会话生效)

把上面两条export命令写入当前用户的~/.bashrc(或者~/.bash_profile)文件,执行source ~/.bashrc后即可永久生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:48:04