2012-11-29 24 views
6

il seguente codice contribuirà a illustrare il mio problema:Impostazione sun.locale.formatasdefault true in Java 7

import java.util.Locale; 
import java.text.*; 

public class LocaleTest { 
    public static void main(String[] args) { 
     System.out.println(Locale.getDefault()); 
     System.out.println("java-version-" +System.getProperty("java.version")); 
     System.setProperty("sun.locale.formatasdefault","true"); 
     System.out.println("prop:" +System.getProperty("sun.locale.formatasdefault")); 
     System.out.println("getLocale-" +Locale.getDefault()); 
    } 
} 

Come sappiamo, c'è bug in Java 7, in Locale.getDefault() Tuttavia, come. raccomandato da Oracle ho impostato la proprietà di sistema 'sun.locale.formatasdefault' su true. Anche se ora sto ottenendo il mio m/c Locale, viene sempre visualizzato come en_US anche se il mio m/c Locale è impostato su fr_BE.

Ecco l'output del codice di cui sopra, che viene compilato ed eseguito su Java 1.7.0_09:

 
en_US 
java-version-1.7.0_09 
prop:true 
getLocale-en_US 

Dei pensieri su che cosa potrebbe causare in tal modo? Molte grazie in anticipo.

risposta

4

È necessario impostare la proprietà di sistema prima del all'avvio della JVM. È possibile farlo tramite gli argomenti della riga di comando:

java -Dsun.locale.formatasdefault=true TargetClass 

o in ambienti in cui non si controlli il lancio della JVM, è possibile impostare tramite variabile _JAVA_OPTIONS ambiente:

  • * Nix

    export _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true 
    
  • di Windows

    SET _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true 
    

In Windows, se si desidera il cambio da applicare non solo per quella CMD, ma per tutto il sistema, si crea un sistema Windows JAVA_TOOL_OPTIONS variabili

+0

grazie per la risposta, ti invitiamo a elaborare come imposta la proprietà di sistema prima di avviare JVM. Se eseguo il programma come java -Dsun.locale.formatasdefault = true className allora funziona. Devo farlo su un'applicazione dove ci sono un numero di classi, quindi come faccio. – vish

+0

Questo è esattamente il modo in cui si specifica la proprietà prima dell'avvio. Puoi anche impostare la proprietà nel tuo ambiente prima di avviare il tuo programma o IDE, o anche a livello di programma *** dentro *** IDE – Perception

+0

grazie Perception, sono molto vicino alla risposta ma avendo poca confusione su questo, così puoi per favore elaborare come impostare SET sun.locale.formataadefault = true Windows in proprietà environment cioè quale file deve essere modificato. – vish