Java系统环境变量

Lee*_*iam 7 java environment-variables

Java是否有一个默认的系统环境变量,在我们设置它时将始终读取/追加?CATALINA_OTPS/ JAVA_OPTSetc似乎只适用于TOMCAT/JBOSS等.

  1. 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传入)来设置它,因为它涉及shell /批处理脚本.
  2. 它应该适用于操作系统,例如在Windows中双击jar文件.
  3. 它应该适用于不同的JRE(Sun,IBM,OpenJDK等).
  4. 它不应该涉及额外的编码.
  5. 它应该在大多数库配置文件中工作,比如设置log4j level $ {LOG_LEVEL}.

更新:添加了项目#4和5.从标题中删除操作系统以使我的问题更清晰.

更新2:在查看Perception的答案后,似乎我的第2项和第3项可以通过实现System.getenv.如何实现第4项和第5项?

以下是场景示例:Imagine现在JAVA_DEFAULT_OPTS是一个环境变量,将由Java读取,因为它现在已成为标准.在开发台式机上,我设置JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m; 在生产服务器机器上,客户设置JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m.当我/用户双击Windows上的jar文件时,应用程序将运行不同的log4j级别和最大内存堆大小.

Rea*_*wTo 13

有一个名为_JAVA_OPTIONS的特殊环境变量,其值将由JVM(java.exe)获取.

在Windows中:

set _JAVA_OPTIONS=-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd
Run Code Online (Sandbox Code Playgroud)

在Linux中:

export _JAVA_OPTIONS='-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd'
Run Code Online (Sandbox Code Playgroud)

对于Java Web Start,它是JAVAWS_VM_ARGS.对于javaw.exe(Applet),它是_JPI_VM_OPTIONS.