Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

unparseable date Java Docker

Olá, tenho uma aplicação Spring Boot - Docker, e esta dando erro de unparseable date.... Tento converter uma String pra Date... No modo Development está funcionando ok, o problema esta quando faço o deployment da aplicação no Docker. Estou tentando mudar TimeZone do Docker mas não estou conseguindo. Estou usando a Windows 10, Docker versão 18.06.0-ce-win72(19098), openJDK:8-jdk-alpine...

5 respostas

Oi Julio, tudo bem? A versão 18 não me parece muito funcional pra gente aqui no Brasil (assumo que esteja aqui). O problema aconteceu depois do update de outubro no Windows 10.

Se checar nas issues do repositório, verá vários problemas reportados pelo pessoal que usa Windows. Link: https://github.com/docker/for-win/issues

Talvez o seu seja mais um caso. O que tenho visto e funcionou pra mim é voltar pra versão 17. Faz isso e tenta novamente?

Oi Wanderson, voltei pra a versão Docker version 17.09.0-ce, e não funcionou, está dando o mesmo erro:

java.text.ParseException: Unparseable date: "11/Ago/2018"

vou deixar um exemplo do código q está dando erro. No local, rodando normal no eclipse ele está funcionando.

Date dateTests = null;

        DateFormat format = new SimpleDateFormat("dd/MMM/yyyy");
        format.setTimeZone(TimeZone.getTimeZone("America/Manaus"));

        try {
            dateTests = format.parse("11/Ago/2018");
            System.out.println("data transformada com sucesso!! " +dateTests);
        } catch (ParseException e) {        
            // TODO Auto-generated catch block
            System.err.println("-*_*_*_*_*_*_*_*__*_*_*_*_*_*_*_*_*_**_* "+e);
        }

Oi Julio, tudo bem? O problema é relacionado ao valor da data em português, por padrão o Java não vai converter, por que se ele tivesse que fazer isso para o português, teria também que suportar todos os idiomas, faz sentido?

Muito provavelmente o Java consulta o sistema operacional pra isso. Então se seu Windows estiver em português, vai dar certo, mas o container Docker provavelmente vai estar em inglês, então não vai conseguir converter.

Aconteceu comigo quando testei seu código. Meu Windows é em Inglês, então deu Exception. Pegou a ideia?

Pra solucionar isso, você pode criar um Locale que fixe as configurações de dada e idioma. Agora como fazer isso exatamente eu não sei te dizer, mas posso dar uma olhada...

solução!

Obrigado Wanderson, peguei a ideia e a solução foi adicionar no dockerfile pra mudar o linguagem pra pt_BR. Solução:

#Add no dockerfile ENV LANG=pt_BR.UTF-8

Ótimo, podemos marcar como resolvido então? Só clicar no botão "marcar como solução" na sua própria resposta já que ela é quem mostra como você resolveu o problema.