Estou recebendo esse erro ao incluir uma biblioteca de código-fonte aberto que precisei compilar a partir do código-fonte. Agora, todas as sugestões na web indicam que o código foi compilado em uma versão e executado em outra versão (nova na antiga). No entanto, só tenho uma versão do JRE no meu sistema. Se eu executar os comandos:
$ javac -version
javac 1.5.0_18
$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
e verifique no Eclipse as propriedades da biblioteca java, recebo 1.5.0_18
Portanto, tenho que concluir que outra coisa, interna à própria classe, está lançando a exceção? É mesmo possível?
Respostas:
Aprendi que mensagens de erro como essa geralmente estão corretas. Quando POSSÍVEL (em sua mente) não poderia ser o que o erro relatado diz, você procura um problema em outra área ... apenas para descobrir horas depois que a mensagem de erro original estava realmente certa.
Como você está usando o Eclipse, acho que o Thilo está certo. O motivo mais provável de você receber esta mensagem é porque um de seus projetos está compilando classes 1.6. Não importa se você possui apenas um JRE 1.5 no sistema, porque o Eclipse possui seu próprio compilador (não javac) e precisa apenas de um 1.5 JRE para compilar as classes 1.6. Pode ser estranho, e uma configuração precisa ser desmarcada para permitir isso, mas eu consegui.
Para o projeto em questão, verifique a seção Propriedades do Projeto (geralmente Alt + Enter), Java Compiler. Aqui está uma imagem de um projeto configurado para compilar 1.6, mas com apenas um 1.5 JRE.
fonte
Você tentou fazer uma "limpeza" completa e depois reconstruir no Eclipse (Projeto-> Limpar ...)?
Você é capaz de compilar e executar com "javac" e "java" diretamente da linha de comando? Isso funciona corretamente?
Se você clicar com o botão direito do mouse em seu projeto, vá para "Propriedades" e depois para "Java Build Path", existem entradas suspeitas em alguma das guias? Este é essencialmente o seu CLASSPATH.
Nas preferências do Eclipse, convém verificar novamente a seção "JREs Instalados" na seção "Java" e verificar se ela corresponde ao que você acha que deveria.
Você definitivamente tem um arquivo .class antigo em algum lugar ou está obtendo uma incompatibilidade em tempo de compilação / tempo de execução nas versões do Java que está usando.
fonte
Você compilou com o Eclipse? Ele usa um compilador diferente (não javac). Isso não deve resultar nesse erro (se tudo estiver configurado corretamente), mas você pode tentar compilá-lo com o javac.
Se isso resolveu o problema, tente ver se o Eclipse possui algumas configurações incorretas do compilador. Especificamente, direcione-o para o Java 5.
fonte
Eu também recebi o mesmo erro. Razão para isso eu estava compilando o projeto usando o Maven. Eu tinha JAVA_HOME apontando para JDK7 e, portanto, o java 1.7 estava sendo usado para compilação e, ao executar o projeto, estava usando o JDK1.5. Alterar a entrada abaixo no arquivo .classpath ou alterar no eclipse, como na captura de tela, resolveu o problema.
ou alteração nas configurações de execução do eclipse como
fonte
Verifique também todos os arquivos jar em seu projeto que foram compilados para uma versão superior do Java. Se essas são suas próprias bibliotecas, você pode corrigir isso alterando o atributo da versão de destino para javac
fonte
Outro cenário em que isso pode acontecer é quando você está iniciando uma instância do eclipse (para depuração etc.) a partir de um eclipse host - nesse caso, alterar o nível do projeto ou a biblioteca JRE no caminho de classe do projeto não ajuda. O que importa é o JRE usado para ativar o ambiente de eclipse de destino.
fonte
Sempre verifique o óbvio também. Recebi esse erro uma vez quando acidentalmente peguei o recurso errado para a ação de adicionar e remover do servidor. Pode ser fácil ignorar.
fonte
A exclusão dos arquivos de configurações específicas do projeto (área de trabalho do Eclipse / pasta do projeto / .settings /) da pasta do projeto também funcionará. Obviamente, precisamos limpar e construir um projeto após a exclusão.
fonte
alterando o projeto para usar o java 1.7: Para que isso funcione, siga estas etapas:
Não está funcionando?
Ainda não funciona?
no diretório do seu projeto: edite .settings / org.eclipse.jdt.core.prefs> verifique se o nível de destino está aplicado
Boa sorte!
fonte
Eu resolvi esse problema alterando o jre necessário para o servidor (no meu caso é o tomcat). Na guia Servidor no eclipse, clique duas vezes no servidor (para abrir a página para a configuração do servidor), clique em Runtime Environment e altere o JRE necessário
fonte