Java系统环境变量

时间:2012-03-13 01:53:24

标签: java environment-variables

Java是否有一个默认的系统环境变量,在我们设置它时会一直读取/追加? CATALINA_OTPS / JAVA_OPTS等似乎仅适用于TOMCAT / JBOSS等。

  1. 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传入)来设置它,因为它涉及shell /批处理脚本。
  2. 它应该适用于操作系统,例如双击Windows中的jar文件。
  3. 它应该适用于不同的JRE(Sun,IBM,OpenJDK等)。
  4. 不应该涉及额外的编码。
  5. 它应该在大多数库配置文件中工作,比如设置log4j 等级$ {LOG_LEVEL}。
  6. 更新 :添加了第4项和第5项。从标题中删除操作系统以使我的问题更加清晰。

    更新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级别和最大内存堆大小。

2 个答案:

答案 0 :(得分:12)

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

在Windows中:

set _JAVA_OPTIONS=-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd

在Linux中:

export _JAVA_OPTIONS='-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd'

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

答案 1 :(得分:1)

Java有一个标准的OS系统环境变量,它始终在启动JVM时设置:

  • os.name
  • os.arch
  • os.version

所有可通过'System.getProperty(propertyName)`

访问

如果您需要更多内容,可以随时使用Management API