restaurar - variables de entorno java linux
¿Cómo puedo obtener el valor de la variable del sistema en Java? (8)
¿Cómo puedo obtener el valor de variable del sistema que está presente en
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
en Java?
Editar
He usado el método System.getenv()
.
Es valor de impresión si doy
System.out.println(System.getenv("JAVA_HOME"));
y muestra valor null
si intento lo mismo para la variable del sistema creada por mí
System.out.println(System.getenv("DBE"));
¿Has intentado reiniciar desde que configuraste la variable de entorno?
Parece que Windows mantiene su variable de entorno en algún tipo de caché, y el reinicio es un método para actualizarlo. No estoy seguro, pero puede haber un método diferente, pero si no va a cambiar su valor variable con demasiada frecuencia, esto puede ser suficiente.
Como mencioné anteriormente en sombody, reiniciar el eclipse funcionó para mí para la variable de entorno definida por el usuario. Después de reiniciar eclipse IDE, System.getenv()
está recogiendo mi variable de entorno.
Del comentario @Yasin:
La opción de reinicio de eclipse no funciona. Solo cerrar la aplicación y reiniciarla resolverá el problema.
En realidad, la variable se puede configurar o no, por lo tanto, en Java 8 o superior, su valor anulable debe ser envuelto en un objeto Optional
, que permite características realmente buenas. En el siguiente ejemplo trataremos de obtener la variable ENV_VAR1
, si no existe podemos lanzar alguna Excepción personalizada para alertar sobre ella:
String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
() -> new CustomCheckedException("ENV_VAR1 is not set in the environment"));
Google dice que echa un vistazo a getenv() :
Devuelve una vista de mapa de cadena no modificable del entorno del sistema actual.
No estoy seguro de cómo las variables del sistema difieren de las variables de entorno, sin embargo, por lo que si pudiera aclarar podría ayudar más.
Hay algunos detalles de interés cuando se obtienen propiedades del sistema / entorno.
Primero, System.getenv(String)
se introdujo way-back-when, luego se desaprobó. La desaprobación (tontamente, IHMO) continuó todo el camino hasta JSE 1.4 .
Se reintrodujo en JSE 5 .
Esos se establecen utilizando el panel Variables de entorno en Windows. Es posible que los cambios en las variables no se recojan hasta que se cierre la VM actual y se cierre la instancia de CMD.exe.
A diferencia de las propiedades del entorno, Java también tiene propiedades del sistema Java, accesibles a través de System.getProperties()
. Estas variables se pueden inicializar cuando la máquina virtual se inicia utilizando una serie -D name = value
línea de comandos argumentos. Por ejemplo, los valores para las propiedades maxInMemory
y pagingDirectory
se establecen en el siguiente comando:
C:/> java.exe -DmaxInMemory=100M -DpagingDirectory=c:/temp -jar myApp.jar
Estas propiedades se pueden modificar en tiempo de ejecución, salvo las restricciones de la política de seguridad.
Para aclarar, las variables del sistema son las mismas que las variables de entorno. Las variables de entorno de usuario se establecen por usuario y son diferentes cada vez que un usuario diferente inicia sesión. Las variables de entorno de todo el sistema son las mismas sin importar con qué usuario inicie sesión.
Para acceder al valor actual de una variable de todo el sistema o una variable de usuario en Java, consulte a continuación:
String javaHome = System.getenv("JAVA_HOME");
Para obtener más información sobre las variables de entorno, consulte esta página de wikipedia .
También asegúrese de que la variable de entorno que está tratando de leer esté configurada correctamente antes de invocar Java haciendo un:
echo %MYENVVAR%
Debería ver el valor de la variable de entorno. De lo contrario, es posible que deba volver a abrir el shell (DOS) o cerrar sesión y volver a iniciar sesión.
Use el System.getenv(String)
, pasando el nombre de la variable a leer.