【发布时间】:2012-03-29 11:01:12
【问题描述】:
Java 是否有一个默认的系统环境变量,当我们设置它时总是会被读取/附加? CATALINA_OTPS/JAVA_OPTS 等似乎只适用于 TOMCAT/JBOSS 等。
- 我不想通过 Java 系统属性(通过 -Dprop1=value1 -Dprop2=value2 传入)设置它,因为它涉及 shell/batch 脚本。
- 它应该可以跨操作系统工作,就像在 Windows 中双击 jar 文件一样。
- 它应该适用于不同的 JRE(Sun、IBM、OpenJDK 等)。
- 不应涉及额外的编码。
- 它应该可以在大多数库配置文件中使用,例如设置 log4j 级别 ${LOG_LEVEL}。
更新:添加了第 4 项和第 5 项。从标题中删除 OS 以使我的问题更清楚。
更新 2:看了 Perception 的回答后,我的第 2 和第 3 项似乎可以通过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 级别和最大内存堆大小运行。
【问题讨论】:
标签: java environment-variables