Locale do Windows 2003 em aplicacao Java

7 respostas
zap

Ola pessoal,

Estou com um problema em uma maquina de um cliente, a qual roda o Windows 2003.

Ainda que nas configuracoes regionais esteja setado Portugues-Brasil, na aplicacao esta sendo apresentado o formato decimal americano, isto é, ponto como separador decimal e virgula como separador de milhar.

Fiz testes com minha maquina (porem com Windows XP) e nao tive esse problema, pois quando altero os idiomas/paises essa alteracao e sempre refletida na aplicacao.

Alguem ja passou por isso ou tem alguma dica ?

Valeu

7 Respostas

_fs

Passe o Locale desejado no construtor ou no método getIntance() dos objetos pertinentes.

zap

Mas ai é que está LIPE.

Se assim o fizesse teria que mudar em vários pontos da aplicação.

E o que gostaria é que fosse mudado apenas as configurações regionais do SO e fosse refletida na aplicação.
Até gostaria de entender porquê ocorre esse tipo de problema de Locale algumas vezes, e outras vezes não.

Valeu

T

Aham, qual é a versão do Java de seu cliente e a sua versão na sua máquina de desenvolvimento? Conforme a versão esses problemas aparecem ou não. Não sei lhe dizer em que versão o problema pode aparecer. Estou com essas 4 versões na minha máquina, sem contar a versão da Microsoft :wink:

C>ver

Microsoft Windows [Version 5.2.3790]

C>\jdk1.6.0\bin\java -version
java version "1.6.0-ea"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-ea-b45)
Java HotSpot(TM) Client VM (build 1.6.0-ea-b45, mixed mode, sharing)

C>\jdk1.5.0\bin\java -version
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)

C>\j2sdk1.4.2_08\bin\java -version
java version "1.4.2_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)

C>java -version
java version "1.3.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)
Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)

C>jview
Microsoft (R) Command-line Loader para Java versao 5.00.3810
Copyright (C) Microsoft Corp 1996-2000. Todos os direitos reservados.

Uso: JView [opçoes] <nomedaclasse> [argumentos]

Opoes:
    /?                    exibe texto de utilizaçao
    /cp <caminhodaclasse> define caminho da classe
    /cp:p <caminho>       anexa o caminho antes do caminho da classe
    /cp:a <caminho>       anexa o caminho depois do caminho da classe
    /n <espaço de nome>   espaço de nome onde executar
    /v                    pausa antes de finalizar se ocorrer erro
    /v                    verifica todas as classes
    /d:<nome>=<valor>     define propriedade do sistema
    /a                    executa visualizador de miniaplicativos

Nome da classe:
    arquivo .CLASS a ser executado.

Argumentos:
    argumentos da linha de comandos a serem passados para o arquivo de classes
_fs

Aí é uma falha no seu design :expressionless: e se o usuário quiser mudar o Locale?
Interessante centralizar a criação desse tipo de objeto. O que não é tão complicado, já que não passa de meia-dúzia deles.

class LocalizedObjectsFactory {
    private static Locale locale = Locale.getDefault();

    public static void setLocale( Locale locale ) {
        this.locale = locale;
    }

    public static NumberFormat getNumberFormat() { ... }
    public static DateFormat getDateFormat() { ... }
}
zap

Concordo que é uma falha, porém não minha, pois não fui eu quem fez o sistema, estou dando manutenção :|. Mas isso não importa.

Thingol,

Na minha máquina tenho:
Windows XP [5.1.2600]
java -version (1.4.2_07)

No cliente tem:
Windows 2003
java -version (1.4.2)

Valeu

T

Seria interessante que vocês dois (você e seu cliente) atualizassem pra 1.4.2_08.

Um motivo que sempre dou é que até a versão 1.4.2_07 havia uma série de falhas de segurança que foram corrigidas na versão 1.4.2_08. (Realmente existem, mas só quando você usa applets ou Java Web Start, não aplicações Java standalone.) Isso normalmente deixa o seu cliente assustado e ele rapidamente troca a versão para 1.4.2_08.

Mas o motivo real é que é melhor usarem a mesma versão - até o release igual, que seria _08 para vocês dois, para que não haja surpresas desagradáveis de uma coisa funcionar com você mas não funcionar no seu cliente. Como eu disse, não sei se tem alguma coisa na 1.4.2_00 que tem problemas de locales, mas por via das dúvidas é melhor deixar o ambiente igual para vocês dois.

zap

Valeu Thingol,

Vou testar isso que vc sugeriu.

Se não der certo vou ter seguir a primeira sugestao do Lipe.

Criado 16 de agosto de 2005
Ultima resposta 16 de ago. de 2005
Respostas 7
Participantes 3