2014-12-04 74 views
0

在我的应用程序中,我需要通过代理发送http请求。在终端我这个启动:使用环境变量的属性运行java

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 ...

+1

https://docs.oracle.com/javase/tutorial/essential/environment/env.html – EJK 2014-12-04 13:14:52

+1

http://docs.oracle.com/javase/6/docs/technotes /guides/net/proxies.html – Snorky35 2014-12-04 13:17:41

回答

2

的Java有两个分开的方式传递参数给程序:

  • 属性,这是在命令行中指定的典型参数(如你的第一个例子),从文件加载或通过代码手动添加。
  • 环境变量,它们取决于操作系统中的设置。

这两个概念是分开的;前者不影响后者,反之亦然。因此,您无法通过环境变量设置属性。

其他选项包括在运行时加载一个.properties文件(假设您的代理尚未在此处初始化)或将完整命令(-D参数和全部)放在shell脚本中以便于启动。

0

没有什么会与标准的Java可执行文件一起工作。 Java可执行文件无法识别用于设置常规 JVM选项的任何环境变量。

所有您尝试过的东西都是第三方工具,脚本和启动器使用的约定。

据我所知,Java可执行文件关注的唯一一个特定于Java的环境变量是CLASSPATH,当您使用-jar选项运行java时,这个变量将被忽略。


说了这么多,有什么从阻止你:

  • 创建一个包装脚本调用java,并把它的搜索路径前进标准java可执行文件的,或

  • 创建一个名为java的shell别名。

这样的包装或别名可以从环境变量中获得JVM选项,并且可以将其称为任何您想要的东西。


1 - ...除了良好的意识:-)