2011-01-13 1 views
2

Ich habe eine Frage, die mich verrückt auf meinem Laptop ich habe oracle-xe 10.2.0 auf ubuntuAlt und geschlagen ORA-12705: Kann nicht NLS-Dateien zuzugreifen oder ungültige Umgebung spezifiziert und java Locale.setDefault()

macht

DB Charset: AMERICAN_AMERICA.AL32UTF8

NLS_LANG = AMERICAN_AMERICA.AL32UTF8

public static void main(String[] args) throws Exception { 

// Default locale before overwriting is ru_RU 
// Locale.setDefault(new Locale("EN")); 
// 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 

    Connection conn = DriverManager.getConnection(
     "jdbc:oracle:thin:@localhost:1521:xe", "test", "test"); 
    try { 
    // @machineName:port:SID, userid, password 

     Statement stmt = conn.createStatement(); 
     try { 
     ResultSet rset = stmt 
      .executeQuery("select * from test"); 
     try { 
      while (rset.next()) 
      System.out.println(rset.getString(1)); // Print col 1 
     } finally { 
      try { 
      rset.close(); 
      } catch (Exception ignore) { 
      } 
     } 
     } finally { 
     try { 
      stmt.close(); 
     } catch (Exception ignore) { 
     } 
     } 
    } finally { 
     try { 
     conn.close(); 
     } catch (Exception ignore) { 
     } 
    } 
    } 

Wenn ich Kommentar Locale.setDefault ich habe eine ORA-12705: Kann nicht NLS-Dateien oder ungültige Umgebung angegebene Ausnahme Zugriff (Standard-locale in diesem Fall bleibt ru_RU), aber wenn ich das Standardgebietsschema auf EN setze, ist alles in Ordnung.

Was kann es bedeuten? Warum wird Locale.getDefault anstelle von NLS_LANG verwendet, wie in jedem Artikel darüber geschrieben?

Dank

Antwort

0

von Standard-JDBC-locale von der JVM locale bestimmt wird, wird NLS_LANG ignoriert. Eine weitere Möglichkeit zum Ändern der Ländereinstellung besteht in der Angabe der Befehlszeilenargumente -Duser.language und -Duser.country.

0

Bitte verwenden Sie diese VM Optionen: -Duser.region = US -Duser.language = en -Duser.country = US

Verwandte Themen