Newsgroup: it.comp.java
Titolo: Come trovare le variabili d'ambiente di Windows

Lo so che Java è nato per essere portabile e non ha la minima idea di cosa
sono le variabili d'ambiente di Windows, ma esiste un modo che per ottenere
magari anche qualcosa di simile ?? Purtroppo utilizzando : 
System.getProperty("java.library.path")
Trovo qualcosa ma dovrei effettuare un parsing della stringa ottenuta, cosa
che posso fare se devo cercare espressioni regolari. Qualche idea ???
Se c'è soluzione perché ti preoccupi ??
Se non c'é soluzione perché ti preoccupi ???

 che posso fare se devo cercare espressioni regolari. Qualche idea ???
Sarň sincero: non ho capito la domanda. Vuoi una variabile? Passagliela con
java -Dvariabile=valore. Altrimenti prova ad essere piů chiaro...
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 java -Dvariabile=valore. Altrimenti prova ad essere piů chiaro...
Intendo una variabile d'ambiente, tipo la cartella dove č installato
Windows, oppure JAVA_HOME, ANT_HOME 'nsomma queste cose cosě.
Cerco di spiegarmi ancora meglio : ho bisogno di sapere dove si trova il
file Hosts. Sotto Windows 9x si trova nella cartella dove č installato il
SO (nel 99,9% dei casi in C:\Windows), mentre in Windows 2000/XP si trova
in C:\WinNT\System32\Drivers\Etc (se la cartella dove č installato Windows
č C:\WinNT, su alcuni computer con XP ho notato che il SO si trova nella
cartella C:\Windows). Una di questi fantomatiche variabili d'ambiente
contiene proprio le informazioni relative alla cartella d'installazione del
SO !!!
In conclusione : come faccio a sapere qual č la cartella dove č installato
Windows ???
Ti ringrazio per l'attenzione, e spero che possa darmi un aiuto
Un saluto, Claudio
________________________________________________
Se c'č soluzione perché ti preoccupi ??
Se non c'é soluzione perché ti preoccupi ???
________________________________________________

Windows, oppure JAVA_HOME, ANT_HOME 'nsomma queste cose così.
C'è un metodo per fare quello che dici tu, ma è stato deprecato. Sun
SCONSIGLIA vivamente di accedere alle variabili d'ambiente. Leggi la
documentazione di java.lang.System.getEnv() . Ok, ti ho detto qual'è
il metodo, ma ti dico anche di non usarlo, perchè -in quanto
deprecato- sarà eliminato in una release successiva del JDK, e in
altre implementazioni della JVM potrebbe già essere sparito.
Il metodo migliore per passare alla JVM delle variabili dall'esterno
è attraverso le proprietà di sistema. Puoi crearti ad esempio uno
script (.bat o .cmd) che richiami il launcher passandogli le variabili
d'ambiente che ti interessano:
--- run_env1.bat ---
@echo off
java -Dwin.env.SystemRoot=%SYSTEMROOT% -jar %1
--- fine file ----
per lanciare il tuo programma (che deve essere già impacchettato) così
--- prompt dei comandi ---
C:\>run_env iltuoprogramma.jar
--------------------------
Per recuperare il valore passato attraverso l'opzione -D puoi usare il
metodo System.getProperty("win.env.SystemRoot") .
Se poi vuoi accedere a TUTTE le variabili d'ambiente puoi usare lo
stesso metodo che usa JBuilder, cioè scriverle tutte su un file
temporaneo (che cancellerai alla fine del programma) e poi parsificare
questo file all'interno della tua applicazione, in questo modo:
--- run_env2.bat ---
@echo off
set>%TEMP%\env.txt
java -Dwin.envfile=%TEMP%\env.txt -jar %1
--------------------
Dall'interno del tuo programma puoi fare così:
--------------------
  import java.io.BufferedReader;
  import java.io.FileReader;
.....
  String envfilename=System.getProperty("win.envfile");
  if (envfilename==null)
      throw new IllegalStateException("Proprietà [envfile] non
trovata, impossibile accedere alle variabili d'ambiente");
  File envfile=new File(envfilename);
  if (!envfile.exists())
      throw new IllegalStateException(envfilename + " inesistente,
impossibile accedere alle variabili d'ambiente");
  BufferedReader rdr=new BufferedReader(new FileReader(envfile));
//leggi il file con chiamate successive a rd.readLine e lo parsifichi.
//non chiedermi come... qualcosa la dovrai fare pure te!
//Suggerimento: guarda la documentazione di java.lang.String
  rdr.close();
//Immagino che avrai inserito ogni singola variabile in un oggetto
//java.util.HashMap globalmente accessibile (vero?!?!?!)
//Allora vuol dire che quel file non ci serve più
  envfile.delete();
.....
-----------------------------
Era così difficile? Guardare un po' di più la documentazione no eh?
--
"tanto va la gatta al largo che affoga"
(per rispondere personalmente leva IlDitoDalCulo)

 --------------------------
Ti ringrazio, anch'io avevo avuto questa idea, però non mi sembrava molto
pulito come metodo. Grazie comunque
________________________________________________
Se c'è soluzione perché ti preoccupi ??
