2012-03-13 18 views
6

¿Tiene Java una variable de entorno del sistema predeterminada que siempre se leerá/anexará cuando la configuremos? CATALINA_OTPS/JAVA_OPTS etc parece sólo para TOMCAT/JBOSS etc.Variable de entorno del sistema Java

  1. no quiero para establecer a través de las propiedades del sistema Java (que se hace pasar a través de en -Dprop1 = valor1 -Dprop2 = valor2), ya que implica la cáscara/lote guión.
  2. Debería funcionar en todo el sistema operativo, como hacer doble clic en el archivo jar en Windows.
  3. Debería funcionar en diferentes JRE (Sun, IBM, OpenJDK, etc.).
  4. No debe incluir codificación adicional.
  5. Debería funcionar en la mayoría de los archivos de configuración de bibliotecas, como configurar log4j nivel $ {LOG_LEVEL}.

actualización: Se ha añadido el artículo # 4 y 5. Quitar OS de título para hacer más clara mi pregunta.

Actualización 2: Después de mirar la respuesta de percepción, parece que mi artículo 2 y 3 se puede lograr a través de System.getenv. ¿Cómo lograr el ítem 4 y 5?

Aquí hay un ejemplo del escenario: Imagínese ahora JAVA_DEFAULT_OPTS es una variable de entorno que será leída por Java, ya que ahora se ha convertido en el estándar. En la máquina de escritorio de desarrollo, establecí JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m; En la máquina del servidor de producción, los clientes establecen JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m. Cuando yo/los usuarios hacen doble clic en el archivo jar en Windows, la aplicación se ejecutará en diferentes niveles de log4j y máximo tamaño de almacenamiento dinámico.

Respuesta

10

Hay una variable de entorno especial llamada _JAVA_OPTIONS, su valor será recogido por la JVM (java.exe).

En Windows:

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

En Linux:

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

Para Java Web Start es JAVAWS_VM_ARGS. Para javaw.exe (Applet), es _JPI_VM_OPTIONS.

+0

Funciona. Al menos en Windows con Sun JRE. Linux debería funcionar también (http://stackoverflow.com/a/1508684/418439). Alguien me avisa si Mac también funciona. ¿Es esto un huevo de Pascua? Ni siquiera está documentado oficialmente en http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html. Debo preguntar esto hace unos años ... :( –

+0

@CKLee, puede encontrar una mención de esto en la documentación de Java 2D, https://docs.oracle.com/javase/8/docs/technotes/guides/2d /flags.html y http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html – RealHowTo

1

Java tiene una variable de entorno de sistema operativo estándar que siempre se establece cuando la JVM se pone en marcha:

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

Todos accesible a través de 'System.getProperty (propertyName) `

Si necesita algo más que esto, siempre puede se el Management API.

+0

¿Te refieres a la API de Java Management Extensions (JMX)? ¿Cómo hacerlo sin codificación adicional? –

+0

Incluye un enlace a Management API.No estoy seguro de lo que quiere decir con 'codificación adicional', tiene que escribir al menos una o dos líneas de código requeridas para acceder a la información que necesita. – Perception

+0

He agregado el elemento n. ° 5 para aclarar mi pregunta. –

Cuestiones relacionadas