2012-03-13 27 views
6

Java ha una variabile di ambiente di sistema predefinita che verrà sempre letta/aggiunta quando viene impostata? CATALINA_OTPS/JAVA_OPTS etc sembra solo per TOMCAT/JBOSS eccVariabile ambiente di sistema Java

  1. Non voglio impostare attraverso le proprietà del sistema Java (che è passato in via -Dprop1 = valore1 -Dprop2 = valore2) in quanto si tratta di shell/batch script.
  2. Dovrebbe funzionare su tutto il sistema operativo, come il file jar doppio clic in Windows.
  3. Dovrebbe funzionare tra diversi JRE (Sun, IBM, OpenJDK ecc.).
  4. Non deve comportare la codifica aggiuntiva.
  5. Dovrebbe funzionare nella maggior parte dei file di configurazione delle librerie, come l'impostazione log4j livello $ {LOG_LEVEL}.

Aggiornamento: Aggiunto item # 4 e 5. Togliere OS dal titolo per rendere più chiara la mia domanda.

Update 2: Dopo aver guardato la risposta di Perception, sembra che il mio oggetto 2 e 3 può essere raggiunto tramite System.getenv. Come ottenere gli articoli 4 e 5?

Ecco un esempio di scenario: Immagina ora JAVA_DEFAULT_OPTS è una variabile di ambiente che verrà letta da Java in quanto è diventata lo standard. Sulla macchina desktop di sviluppo, ho impostato JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m; Sulla macchina server di produzione, i clienti impostano JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m. Quando gli utenti effettuano un doppio clic sul file jar su Windows, l'applicazione verrà eseguita con diversi livelli log4j e memoria massima heap.

risposta

10

C'è una variabile di ambiente speciale denominata _JAVA_OPTIONS, il suo valore verrà rilevato dalla JVM (java.exe).

In Windows:

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

In Linux:

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

Per Java Web Start è JAVAWS_VM_ARGS. Per javaw.exe (Applet), è _JPI_VM_OPTIONS.

+0

Funziona. Almeno in Windows con Sun JRE. Anche Linux dovrebbe funzionare (http://stackoverflow.com/a/1508684/418439). Qualcuno mi faccia sapere se anche il Mac funziona. E 'un uovo di pasqua? Non è nemmeno ufficialmente documentato su http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html. Dovrei chiedere qualche anno fa ... :( –

+0

@CKLee, puoi trovarne una menzione nella documentazione Java 2D, https://docs.oracle.com/javase/8/docs/technotes/guides/2d /flags.html e http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html – RealHowTo

1

Java ha una variabile di ambiente di sistema operativo standard che viene sempre impostato quando la JVM viene lanciato:

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

Tutto accessibile tramite 'System.getProperty (propertyName) `

Se hai bisogno di qualcosa di più di questo potresti sempre se lo Management API.

+0

Si intende l'API JMX (Java Management Extensions)? Come farlo senza ulteriore codifica? –

+0

Incluso un collegamento all'API di gestione.Non sei sicuro di cosa intendi con 'codice aggiuntivo', devi scrivere almeno una o due righe di codice richieste per accedere alle informazioni che ti servono. – Perception

+0

Ho aggiunto l'elemento n. 5 per rendere più chiara la mia domanda. –

Problemi correlati