Shell 变量和 JVM 系统属性是不同的配置输入。为 curl 导出 http_proxy 并不会在 Java URLConnection 客户端内部建立 http.proxyHost。

如果某个 JVM 中参与联网的 HTTP 连接应走固定路径,启动参数可以把这一选择明确表达出来:

java -Dhttp.proxyHost=203.0.113.10 -Dhttp.proxyPort=8080 \
     -Dhttps.proxyHost=203.0.113.10 -Dhttps.proxyPort=8080 \
     -jar application.jar

该端点仅作示例;当应用允许该路径时,可以使用 HTTP 代理列表中的公共 HTTP 候选来填写这些字段。主机属性接受主机名或 IP 地址,端口需单独提供。它不是完整的代理 URL。

认证和绕过规则需要各自的配置。不要仅因为某个旧示例包含未文档化的 http.proxyPassword 属性,就推断它一定有效。请查阅你所使用 JDK 的官方认证 API 和网络属性文档。

这适用于参与联网的 Java 路径。若某个库独立配置了自己的 HTTP 客户端,它可能遵循另一套策略。在花时间把每个 Shell 变量都翻译成 JVM 参数之前,先确认那个客户端。

相关文章