Java有一个默认的系统环境变量吗?设置时这个变量总是会被读取/附加?似乎像
以下是一个场景示例: 假设现在
CATALINA_OTPS
/JAVA_OPTS
等只适用于TOMCAT/JBOSS等。
- 我不想通过Java系统属性来设置它(这是通过-Dprop1=value1 -Dprop2=value2传入的),因为它涉及到shell/batch脚本。
- 它应该跨操作系统工作,例如在Windows双击jar文件。
- 它应该跨不同的JREs工作(Sun、IBM、OpenJDK等)。
- 它不应该涉及额外的编码。
- 它应该在大多数库的配置文件中起作用,例如设置log4j级别${LOG_LEVEL}。
System.getenv
实现。如何实现第4和第5项?以下是一个场景示例: 假设现在
JAVA_DEFAULT_OPTS
是Java将读取的环境变量,因为它现在已成为标准。在开发桌面机器上,我设置JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m
;在生产服务器机器上,客户设置JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m
。当我/用户在Windows上双击jar文件时,应用程序将以不同的log4j级别和最大内存堆大小运行。