在我的应用程序中,我需要通过代理发送http请求。在终端我开始吧:
java -Dhttp.proxyPort=**** -Dhttp.proxyHost=***.***.***.*** -jar app.jar
我应该使用什么环境变量来启动我没有-D选项的应用,例如
java -jar app.jar
OS Linux。 Java 7。
THX!
PS已经尝试过JAVA_OPTS,JAVA_OPTIONS,_ JAVA_OPTIONS,JAVA_TOOL_OPTIONS ......
答案 0 :(得分:2)
Java有两种不同的方法将参数传递给程序:
这两个概念是分开的;前者不影响后者,反之亦然。因此,您无法通过环境变量设置属性。
其他选项包括在运行时加载.properties
文件(假设您的代理尚未在该点初始化)或将完整命令(-D
参数和所有内容)放入shell中脚本更容易启动。
答案 1 :(得分:0)
标准Java可执行文件没有任何用处。 Java可执行文件无法识别用于设置常规 JVM选项的任何环境变量。
您尝试过的所有内容都是第三方工具,脚本和启动器使用的约定。
据我所知,Java可执行文件关注的唯一特定于Java的环境变量是CLASSPATH
,当您使用java
运行-jar
时,该变量将被忽略选项。
话虽如此, 1 并没有阻止你:
创建一个名为java
的包装器脚本,并将其放在标准java
可执行文件之前的搜索路径上,或
创建一个名为java
的别名。
这样的包装器或别名可以从环境变量中获取JVM选项,您可以将其称为任何您想要的。
1 - ......除了良好意义:-)