Erro DIRPF / For input string: “9-e”

Mais uma declaração de Imposto de Renda no Linux, mais um problema. Não reclamo tanto porque sei o quão difícil é programar para “ambientes hostis”, mas reclamo ainda assim por não tem um canal de comunicação técnico para poder relatar os problemas (ou código aberto, ainda que não livre, para já mandar patchs de uma vez). O erro, no título, acontece logo de cara, ao tentar abrir o programa.

A explicação com solução. Num terminal (Ctrl+Alt+T), execute:

java -version

Esse primeiro comando mostra a versão padrão do Java da sua máquina. Na minha máquina retorna uma linha com “9-ea” no final, e isso causa o problema. O pessoal da Receita está tentando ler o “9”, mas o “-ea” causa um erro, que por sua vez derruba o programa. Não muito esperto.

Com isso e mente, execute um segundo comando:

update-alternatives --list java

Esse comando mostra uma lista de versões alternativas do Java, instaladas na sua máquina. No meu caso:

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-oracle/jre/bin/java
/usr/lib/jvm/java-9-oracle/bin/java

A versão da DIRPF 2015-2016 instala num caminho padrão, cujo ícone tem o seguinte comando:

/usr/lib/jvm/java-9-oracle/bin/java -Xms128M -Xmx512M -jar ~/ProgramasRFB/IRPF2016/irpf.jar

Que você vai perceber, é um comando que começa com uma das alternativas listadas acima. A solução, bem simples, é substituir a primeira parte por uma das alternativas e rodar no terminal, até funcionar. A ideia é pegar uma das alternativas, indo da maior versão para a menor, sempre preferindo a versão da Oracle (infelizmente).

Eu consegui abrir com a penúltima das alternativas (que minha máquina é a versão 1.7.0_80), mas não fui até o final da declaração ainda para ter certeza.

Tente aí, e comente o sucesso ou insucesso. Ficarei feliz com os agradecimentos, e posso tentar ajudar os casos que não resolver.

E sorte, claro.


ADENDO: Para facilitar, criei um script que tenta os caminhos padrão listados acima. E não, executar código aleatório das internets não é lá muito seguro. Dado o aviso, o script está disponível aqui, e pode ser baixado, habilitado e executado com as sequências abaixo:

wget https://raw.githubusercontent.com/alfsb/dirpf/master/dirpf20152016-init.sh
chmod +x dirpf20152016-init.sh
./dirpf20152016-init.sh

Agradeço quem comentar os caminhos de alternativas Java, versão 7 ou maior, não listadas acima, para complementar o script.

25 comentários em “Erro DIRPF / For input string: “9-e””

  1. Olá André. Quando digito java-version aparece “java version 9-ea”. Mas quando digito a segunda opção “update-alternatives -lista java” aparece a mensagem “update-alternatives: erro: argumento desconhecido ‘-list'”. O que significa?
    Obrigado pela atenção.

    Responder
    • Olá André. Já consegui resolver. Ao invés de digitar “update-alternatives: erro: argumento desconhecido ‘-list’” vi no blog do Edivaldo a alternativa: sudo update-alternatives –config java. Com a informação apresentada, segui suas orientações e funcionou.
      Obrigado pela atenção.

      Responder
      • Olá Hermes, ainda bem que funcionou no final.

        Mas seu comentário serviu de alerta, o problema foi uma conversão tipográfica automática do WordPress. O segundo comando tem um argumento “hífen hífen list”, mas que sem a tag correta é reformatado como “em-dash list”. Copiando direto da tela é carregado o “em dash list”, que o comando update-alternatives não reconhece, e daí o erro que encontrou.

        Isso acontece nos comentários também… Um hífen: -. Dois hífens: –. Acredito que digitou “hífen hífen config”, acima, mas aparece um hífen só, mais largo. Se tentar copiar o comando direto do seu comentário verá que ele não funciona. E pior, não vi como desligar essa transformação automática do texto. Alterei o código acima para refletir isso, e agora quem copiar do meu texto deve funcionar.

        Um alerta: o comando que executou trocou a versão padrão do Java, provavelmente para uma anterior, e mais provavelmente ainda uma versão sujeita a problemas de segurança. Isso é grave, sugiro reconfigurar para a mais recente o mais rápido possível, e usar a DIRPF 2015-2016 conforme acima, que daí só esse programa rodará com uma versão velha.

        Deixar Java velho rodando no navegador é suicídio digital nesses tempos últimos. Daí a solução via –config não é a mais recomendável.

        Responder
  2. Obrigado ! Já tinha reinstalado varias vezes o java versão 9.
    Acontecia extamente o que voce relatou. For input string: “9-e”
    Por sorte tinha o java versão 8 como voce pode ver abaixo:

    /usr/lib/jvm/java-8-oracle/jre/bin/java
    /usr/lib/jvm/java-9-oracle/bin/java
    Rodei como voce descreveu só que com versão 8 e funcionou certinho.
    Valeu !!!

    Responder
    • Opa, de nada Luiz Roberto, que bom que rolou aí.

      Vou inclusive usar esses caminhos para melhorar o script, mencionado. E boa sorte, sempre.

      Responder
  3. Obrigado pela dica. Resolveu meu problema.

    Cliquei com botão da direita do mouse no arquivo criado na area de trabalho. Fui em propriedades e no campo “Comando” continha o seguinte comando:

    /usr/bin/java -Xms128M -Xmx512M -jar /home/andre/ProgramasRFB/IRPF2016/irpf.jar

    ou algo parecido, já não tenho tanta certeza. Conforme as orientações substitui por

    /usr/lib/jvm/java-8-oracle/jre/bin/java -Xms128M -Xmx512M -jar /home/eduardo/ProgramasRFB/IRPF2016/irpf.jar

    e deu certo. Primeiro tentei com java 9 e não deu certo, mas com o 8 deu certo.

    Responder
  4. Boa noite Andre, td bem.
    Cara, sou praticamente um iniciante, porém fã, dos sistemas livres linux. Achei muito bacana sua iniciativa de ajudar os “mais necessitados” no que se refere programação em linux, rsrsr!! Infelizmente tive o mesmo problema de erro ( for input string: 9-e) pois o meu java é o a versão 9. Porém só possuo a versão 9 e a 6. Baixei o seu script e tentei modificar as linhas (utilizando o nano), mas o script faz o upload das versões da sua pasta, correto? Por isso não adianta eu trocar pela versão 6, mesmo pq eu tentei e deu erro. Será que da pra rodar de outra maneira, tal como trocar uma linha de código do script do próprio programa da Receita. Não gostaria de ter que re-instalar uma versão antiga do java (acho que seria um retrocesso, entende!). Mas se não tiver outra alternativa, paciência. Vlw!

    Responder
    • Sim, dá para rodar de outra maneira. Se você executar só o wget e o chmod vai estar com o script baixado na sua máquina, pronto para editar com nano, gedit ou outro editor que estiver familiarizado.

      Eu alterei o script para deixar mais genérico, para não ter os nomes da minha pasta. Mas precisaria do caminho do Java 6 da sua máquina para incluir.

      Se você souber o caminho, é simples. Num terminal digite /caminho/java6/java -Xms128M -Xmx512M -jar ~/ProgramasRFB/IRPF2016/irpf.jar

      Esse o grosso do comando.

      Responder
  5. Olá André.
    Parabéns pelo script.
    Pessoas com a tua solidariedade fazem falta na nossa sociedade.
    Eu já havia tentado inúmeras soluções, e sempre enroscava no tal do 9-e.

    Com a tua solução “mágica” (lógica!), funcionou certinho!

    Responder
  6. Minha solução rápida no Ubuntu 15.04

    sudo apt-get remove oracle-java9-set-default oracle-java9-installer;
    sudo apt-get install oracle-java8-set-default oracle-java8-installer

    Remove a versão 9 e reinstala a versão 8

    Responder
  7. Eu fui instalar o programa da receita de 2017 hoje (23/02/2017) deu o mesmo erro e a correção funcionou.
    Obrigado

    Responder
  8. Olá, estou enfrentando um problema parecido.
    Instalei o IRPF2017, e o Oracle Java9. Entretanto, quando clico no ícone do IRPF2017 aparece a seguinte mensagem: for input string: “9-e”.
    Como proceder?

    Responder
    • Então, os programas DIRPF da Receita não funcionam com Java 9.

      A solução é você instalar o Java 8 e alterar o link do ícone para que ele não use a versão 9.

      Responder
  9. Olá, ajudou-me bastante, depois de penar quase o dia inteiro.
    Consegui modificando para a versão 8.
    Obrigado.
    Um grande abraço.

    Responder

Deixe um comentário