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.
- 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.
- It should work across OS, like double click jar file in Windows.
- It should work across different JREs (Sun, IBM, OpenJDK etc).
- It should not involve extra coding.
- 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.