Horário de verão - problema
No dia 02 para 03 de Novembro de 2019, o Java estava programado para trabalhar no horário de verão Brasileiro. Então caso você rode o código abaixo, vai perceber que a hora estará adiantada.
public static void main(String[] args) { System.out.println(new Date()); }Mon Nov 04 10:52:50 BRST 2019
Sendo que a data do sistema é:
Mon Nov 4 09:52:50 -03 2019
Se este não é o seu caso, pode ficar tranquilo que seu Java está atualizado com as definições de TimeZone.
Solução
Caso você não saiba, o Java mantem uma base de dados de TimeZone local que não é atualizada automaticamente. Então como o horário de verão já estava planejado e embutido na JRE, a atualização precisa ser feita de forma manual.
Atenção: O procedimento abaixo pode não funcionar para todas as versões do Java ou variações de distribuição.
Abaixo o processo para atualização:
1 - Faça o download da ferramenta tzupdater:
2 - Descompacte o conteúdo do zip.
export TZ_UPDATER_JAR_ROOT=/home/Download/tzupdater-2.3.0
4 - Rode este script dentro do bin do jdk desejado:
cp -v $TZ_UPDATER_JAR_ROOT/tzupdater.jar . && chmod -v 777 tzupdater.jar && java -jar tzupdater.jar -l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
O script acima copia o jar para o diretório bin do JDK e executa a atualização.
jEnv:
Caso você utilize o jEnv (ver neste post), você precisará criar uma versão local dentro do diretório bin do JDK. Caso contrário estará executando o Java configurado como global. Obrigado ao amigo Rafael Buzzi pela dica.
Siga no twitter para ficar informado dos novos posts:
Comentários
Postar um comentário