2012-11-29 20 views
6

下面的代碼將有助於說明我的問題:設置sun.locale.formatasdefault到真正的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()); 
    } 
} 

正如我們所知,有錯誤在Java 7中,在Locale.getDefault()然而,隨着。由Oracle推薦我已經將系統屬性'sun.locale.formatasdefault'設置爲true。儘管我現在正在獲取我的m/c語言環境,但即使我的m/c語言環境設置爲fr_BE,它總是顯示爲en_US。

這裏是上面代碼的輸出,這是編譯和基於Java 1.7.0_09運行:

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

上什麼可能因此造成有什麼想法?提前謝謝了。

回答

4

您需要設置該系統屬性之前啓動您的JVM。您可以通過命令行參數做到這一點:

java -Dsun.locale.formatasdefault=true TargetClass 

,或者在你不控制JVM的啓動環境,您可以通過_JAVA_OPTIONS環境變量設置:

  • * NIX

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

    SET _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true 
    

在Windows中,如果你想應用的變化不僅爲CMD,但是全系統,您創建一個Windows系統變量JAVA_TOOL_OPTIONS

+0

感謝您的回覆,你可以請詳細說明如何在啓動JVM之前設置系統屬性。如果我將程序作爲java -Dsun.locale.formatasdefault = true className運行,那麼它就可以工作。我需要在有多少個類的應用程序中工作,然後我該怎麼做。 – vish

+0

這正是您在啓動之前指定屬性的方式。您也可以在啓動程序或IDE之前在環境中設置屬性,或者甚至在每個程序級別***在*** IDE中進行設置 – Perception

+0

感謝感知,我非常接近答案,但對於混淆這個,請你詳細說明如何在環境屬性中設置SET sun.locale.formataadefault = true Windows 即需要更改哪個文件。 – vish

相關問題