Não é possível compilar a class para JSP: O tipo java.util.Map $ Entry não pode ser resolvido. É indiretamente referenciado a partir dos arquivos .class necessários

Não consigo fazer com que o tomcat7 compile os jsps. Até executar os servlets de exemplo bem e o serviço está funcionando. Eu estou executando o Oracle 8.

Alguém pode me apontar na direção certa?

Aqui está o stacktrace:

type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468) org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs. 

O código se parece com isso e é o código de exemplo do tomcat7, então acho que está correto.

    JSP 2.0 Examples - Hello World SimpleTag Handler   

JSP 2.0 Examples - Hello World SimpleTag Handler


This tag handler simply echos "Hello, World!" It's an example of a very basic SimpleTag handler with no body.


Result:

Você deve usar uma versão mais recente do tomcat que tenha suporte para o JDK 8.

Posso confirmar que o apache-tomcat-7.0.35 NÃO tem suporte para o JDK8, também posso confirmar que o apache-tomcat-7.0.50 tem suporte para o JDK8.

O formato de class do JDK8 foi alterado e esse é o motivo pelo qual o Tomcat não pode compilar JSPs. Tente obter uma versão mais recente do Tomcat.

Eu tive recentemente o mesmo problema. Este é um bug no Tomcat, ou melhor, o JDK 8 tem um formato de arquivo de class ligeiramente diferente do que as versões anteriores do JDK8 tinham. Isso causa inconsistência e o Tomcat não pode compilar JSPs no JDK8.

Veja as seguintes referências:

  • Compilando JSPs com o JDK 1.8 no Tomcat 8
  • compilation tem sucesso em java7 mas falha em java8

Como estamos rodando no Ubuntu 12.04 LTS e o pacote oficial mais recente do tomcat7 é o 7.0.26, não podemos atualizar o tomcat inteiro com facilidade.

Eu peço para testar com o jdk8, eu fui capaz de resolver este problema, alterando alguns flasks contra sua última versão 7.0 *.

Eu mudei o jasper.jar, jasper-el e tomcat-util para a versão 7.0.53 e adicionei o ecj-4.3.1.jar. Isso traz o aplicativo de volta online.

MAS … também eu mudei o conteúdo empacotado com isso, então talvez seja melhor baixar o tomcat inteiro e usá-lo como pacotes bagunçados. Então, por favor, veja isso apenas como um quickhack ou solução muito suja.

Se você estiver usando o maven, então você pode adicionar o plugin tomcat7-maven ao seu pom.xml e ele deve rodar bem. Este plug-in executará o projeto na versão 7.0.47 do contêiner do servlet Tomcat, que suporta o JDK 1.8.

    org.apache.tomcat.maven tomcat7-maven-plugin 2.2   ./src/main/webapp/META-INF/context.xml 8080     com.oracle ojdbc6 11.2.0.4.0     

Espero que isso seja útil! obrigado

Da base de conhecimento do JIRA :

 Symptoms 

Ações de stream de trabalho podem estar inacessíveis

  1. JIRA pode lançar exceções na canvas
  2. Uma ou ambas das seguintes condições podem existir:

O seguinte aparece no atlassian-jira.log:

  2007-12-06 10:55:05,327 http-8080-Processor20 ERROR [500ErrorPage] Exception caught in500 page Unable to compile class for JSP org.apache.jasper.JasperException: Unable to compile class for JSP at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:572) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305) 

_

 Cause: 

O contêiner do Tomcat armazena em cache os arquivos .java e .class gerados pelo analisador JSP que são usados ​​pelo aplicativo da web. Às vezes, eles são corrompidos ou não podem ser encontrados. Isso pode ocorrer após um patch ou atualização que contenha modificações nos JSPs.

 Resolution 

1. Exclua o conteúdo da pasta / work se estiver usando o JIRA independente ou / work se estiver usando a instalação EAR / WAR. 2. Verifique se o usuário que está executando o processo de aplicativo do JIRA possui permissão de leitura / gravação no diretório / work. 3. Reinicie o contêiner do aplicativo JIRA para reconstruir os arquivos.

Adicione esta importação <%@page import="java.util.Map" %>

Isso funcionou para mim, mas eu também precisava adicionar <% @ page import = "java.util.HashMap"%>. Parece que a resposta acima é verdadeira, que se você tiver o tomcat mais novo, talvez não seja necessário adicionar essas linhas, mas como não consegui alterar todo o meu sistema, isso funcionou.
Obrigado

Enfrentou exatamente o mesmo problema ao atualizar meu aplicativo do java 6 para o java 8 no tomcat 7.0.19. Depois de atualizar o tomcat para o 7.0.59, esse problema foi resolvido.

Experimente e adicione <%@page import="java.util.Map.Entry"%> ao seu arquivo jsp

Há muitas respostas corretas / iguais, mas para referências futuras:

O mesmo significa Tomcat 7. Esteja ciente de que atualizar apenas as versões de seus frameworks usados ​​(como proposto em outras perguntas semelhantes) não é suficiente.

Você também precisa atualizar a versão do plugin do Tomcat. O que funcionou para mim, usando o Java 7, foi atualizar para a versão 2.2 do tomcat7-maven-plugin (= Tomcat 7.0.47).

Eu recentemente me deparo com o mesmo problema. Eu estava usando o IntelliJx64 com Tomcat7.0.32 com jdk.8.0.102 . Não houve problema então. Consegui acessar diretamente meu localhost de implantação : [port] sem adicionar [mywebapp] ou / ROOT .

Quando tentei migrar para o eclipse neon , me deparei com o mesmo bug que é discutido quando tentei definir o caminho como uma string vazia . Quando impondo o ambiente de execução ao Java7 e configurando módulos para esvaziá-lo, não resolvi o problema. No entanto, quando eu mudei minha instalação do tomcat para 7.072 e alterei manualmente a configuração do caminho do contexto para path = “” o problema foi resolvido no eclipse. (Você pode manipular o caminho via servidor de clique duplo e alternar para a guia de módulo também.)

Minha maravilha é como é que o IntelliJ não estava dando problemas com o mesmo bug que deveria estar relacionado à versão de instalação do tomcat?

Também parece haver uma relação com o IDE em uso.

Eu corri para isso antes, como outros disseram: basta upgrade jetty plugin

se você estiver usando maven

vá para o plugin jetty em pom.xml e atualize-o para

  org.eclipse.jetty jetty-maven-plugin 9.3.0.v20150612  3  ${jetty.port} 60000  foo ${jetty.stop.port}   

espero que isso ajude você