Java系统环境变量 [英] Java System Environment Variable

查看:465
本文介绍了Java系统环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

更新 :添加了项目#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级别和最大内存堆大小。

解决方案

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



在Windows中:

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

在Linux中:

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

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


Does Java have a default System Environment Variable that will always be read/appended when we set it? CATALINA_OTPS/JAVA_OPTS etc seems only for TOMCAT/JBOSS etc.

  1. I do not want to set it through Java system properties (which is passed in via -Dprop1=value1 -Dprop2=value2) as it involves shell/batch script.
  2. It should work across OS, like double click jar file in Windows.
  3. It should work across different JREs (Sun, IBM, OpenJDK etc).
  4. It should not involve extra coding.
  5. It should work in most libraries configuration file, like setting log4j level ${LOG_LEVEL}.

Update: Added item # 4 and 5. Remove OS from title to make my question clearer.

Update 2: After looking at Perception's answer, it seems like my item 2 and 3 can be achieved via System.getenv. How to achieve item 4 and 5?

Here is example of scenario: Imagine now JAVA_DEFAULT_OPTS is an environment variable that will be read by Java as it has now become the standard. On development desktop machine, I set JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m; On production server machine, customers set JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m. When I/users double click the jar file on Windows, the application will run will different log4j level and max memory heap size.

解决方案

There is a special environment variable called _JAVA_OPTIONS, its value will be picked up by the JVM (java.exe).

In Windows:

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

In Linux:

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

For Java Web Start it's JAVAWS_VM_ARGS. For javaw.exe (Applet), it's _JPI_VM_OPTIONS.

这篇关于Java系统环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆