2012-09-25 2 views
29

C'è stata una modifica in Java 1.7 nel modo in cui le impostazioni internazionali predefinite vengono ottenute dal sistema operativo. Esistono metodi per ripristinare il vecchio comportamento, ad es. impostando il flag -Dsun.locale.formatasdefault = true quando si avvia un'istanza JVM.Come impostare una proprietà del sistema java in modo che sia efficace ogni volta che avvio JVM senza aggiungerlo agli argomenti della riga di comando

Vorrei impostare questo flag in modo permanente in modo da non doverlo specificare negli argomenti della riga di comando ogni volta che avvio un'istanza JVM. Esiste un file o qualsiasi altra possibilità per modificare le impostazioni predefinite per JVM? Qualcosa come il file Eclipse.ini ma per la stessa JVM?

+0

I don Non credo ci sia, ma puoi creare una classe di avvio che esegue automaticamente il tuo programma (con il metodo "vero" in un'altra classe), con gli argomenti della riga di comando desiderati presenti. – Vulcan

risposta

38

È possibile impostare la variabile di ambiente JAVA_TOOL_OPTIONS nel proprio sistema operativo. Tutti gli strumenti Java (java, javac, ..) selezioneranno questa variabile e la useranno. Quindi potresti ad es. utilizzare

SET JAVA_TOOL_OPTIONS=-Dsun.locale.formatasdefault=true 

Io lo uso per forzare una locale specifica per ogni JVM.

Ma questo funziona solo se l'applicazione viene avviata tramite gli strumenti Java. Se è ad es. avviato da un programma C che chiama la jvm DLL questo non verrà utilizzato.

Edit: Ho appena testato, e sembra JAVA_TOOLS_OPTIONS è ripreso anche quando le DLL vengono avviati (verificato con un'applicazione swing che utilizza WinRun4J come un lanciatore)

See: http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html

+3

Usiamo '_JAVA_OPTIONS' e sembra funzionare, non so se funzionerà per chiamare la DLL, ne dubito. – MadProgrammer

+0

JAVA_TOOL_OPTIONS: è esattamente ciò di cui ho bisogno, grazie! –

+0

@Bugpecker, è possibile accettare la risposta allora. ;) – Vadzim