Java - como leer una variable de entorno dedsde java?

 
Vista:

como leer una variable de entorno dedsde java?

Publicado por guille (2 intervenciones) el 09/09/2002 13:53:10
Hola
Alguien puede ayudarme...
Mi problema es el siguiente:
Necisto acceder desde una aplicacion java a una variable de entorno.
Ej
Tengo declarada una variable llamada FILE_CONF, que contiene un directorio, donde se encuentra un fichero de configuracion
El caso es que no se como recuperar el valor de esa variable de entorno, desde una aplicacion en java
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como leer una variable de entorno dedsde java?

Publicado por Gustavo (15 intervenciones) el 09/09/2002 18:08:53
Habia en las primeras versiones un metodo de System, el getenv() en donde se podia recuperar las variables de entorno, pero ahora es deprecated y no es aconsejable su uso.
Por lo tanto se debe usar la clase Properties , pero no sin un trabajo extra....
te voy a poner un ejemplo se su uso
Primero seteo en S.O la variable que quiero...
SET HOLA="hola mundo!"
Tene en cuenta las comillas si la cadena tiene espacios

Despues creo una clase que imprima por pantalla el valor de HOLA

public class PruSet{
public static void main(String[] args) {
java.util.Properties p = System.getProperties();
String cadena = p.getProperty("HOLA");
System.out.println(Cadena);
}

El problema que no siempre Properties toma todas las variables de entorno, la solucion es forzar a que lo tome :
java -DHOLA=%HOLA% PruSet. (Esto es para el caso de Windows)

java -DHOLA=$HOLA PruSet (Para UNIX/LINUX)

se logra con el parametro -D y seguido la variable que nos interesa



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como leer una variable de entorno dedsde java?

Publicado por guille (2 intervenciones) el 10/09/2002 18:11:17
Como bien dices, solo toma algunas variables, por lo general, varialbles propias a todo S.O. como PHAT, TEMP etc...
Pero ya he dado con la solucion

// NT version
Process p = Runtime.getRuntime().exec("cmd.exe /c echo %MYVAR%");
BufferedReader br = new BufferedReader
( new InputStreamReader( p.getInputStream() ) );
String myvar = br.readLine();
System.out.println(myvar);

Como ves hace una llamada al sistema y realiza un set y lo recupera en forma de streamer, y lo lee desde un buffer.
Saludos
Gracias por tu ayuda.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar