Не удалось скомпилировать класс для JSP: тип java.утиль.Запись Map$не может быть разрешена. На него косвенно ссылаются из required.файл класса
Я не могу заставить tomcat7 компилировать JSP. Это до запуска примера сервлетов просто отлично, и служба работает и работает. Я запускаю oracle java 8.
может ли кто-нибудь указать мне в правильном направлении?
вот 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.
код выглядит так, и это пример кода из tomcat7, поэтому я предполагаю, что это правильно.
<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
<html>
<head>
<title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>
</head>
<body>
<h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1>
<hr>
<p>This tag handler simply echos "Hello, World!" It's an example of
a very basic SimpleTag handler with no body.</p>
<br>
<b><u>Result:</u></b>
<mytag:helloWorld/>
</body>
</html>
11 ответов:
вы должны использовать более позднюю версию tomcat, которая имеет поддержку JDK 8.
Я могу подтвердить, что apache-tomcat-7.0.35 не поддерживает JDK8, я также могу подтвердить, что apache-tomcat-7.0.50 поддерживает JDK8.
формат класса JDK8 изменился, и именно по этой причине Tomcat не может компилировать JSP. Попробуйте получить более новую версию Tomcat.
недавно у меня была такая же проблема. Это ошибка в Tomcat, или, скорее, JDK 8 имеет немного другой формат файла класса, чем у предыдущих версий-JDK8. Это вызывает несогласованность, и Tomcat не может компилировать JSP в JDK8.
посмотреть следующие ссылки:
потому что мы работаем на Ubuntu 12.04 LTS и последний официальный поддерживаемый пакет tomcat7 является 7.0.26 мы не можем легко обновить весь tomcat.
Я приказываю проверить с помощью jdk8, я смог решить эту проблему, изменив некоторые банки против их последней версии 7.0.* версия.
я переключил Джаспер.jar, jasper-el и tomcat-util к версии 7.0.53 и добавил ecj-4.3.1.сосуд. Это возвращает приложение обратно в интернет.
но... также я изменено упакованное содержимое с этим, поэтому, возможно, было бы лучше загрузить весь tomcat и использовать его самостоятельно, как беспорядочные пакеты. Поэтому, пожалуйста, смотрите на это только как на очень грязный quickhack или обходной путь.
Если вы используете maven, то вы можете добавить tomcat7-maven-плагин для вашего pom.XML и он должен работать нормально. Этот плагин будет запускать проект на Tomcat servlet container версии 7.0.47, который поддерживает JDK 1.8.
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- Include context file for Datasource configuration --> <contextFile>./src/main/webapp/META-INF/context.xml</contextFile> <port>8080</port> </configuration> <dependencies> <!-- Include jdbc driver dependency if using datasource (in my case oracle) --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.4.0</version> </dependency> </dependencies> </plugin> </plugins>
надеюсь, что это полезно! Спасибо
Symptoms
действия рабочего процесса могут быть недоступны
- JIRA может создавать исключения на экране
- один или оба из следующих условий:
далее появляется в компании Atlassian-JIRA для.журнал:
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:
контейнер Tomcat кэшируется .ява и. файлы классов, созданные JSP-парсер они используются веб-приложения. Иногда они получают поврежден или не может быть найден. Это может произойти после обновления или обновления это содержит изменения в JSP.
Resolution
1.Удалите содержимое папки /work при использовании автономного JIRA или / work при использовании установки EAR / WAR . 2. Убедитесь, что пользователь, выполняющий процесс приложения JIRA, имеет разрешение на чтение/запись в каталог /work. 3. Перезапустите приложение-контейнер с Jira, чтобы восстановить файлы.
добавить этот импорт
<%@page import="java.util.Map" %>
это сработало для меня, но мне также нужно было добавить . Кажется, что приведенный выше ответ верен, что если у вас есть новый tomcat, вам не нужно добавлять эти строки, но поскольку я не мог изменить всю свою систему, это сработало.
Спасибо
столкнулся с точно такой же проблемой при обновлении моего приложения с java 6 до java 8 на tomcat 7.0.19. После обновления котяра в 7.0.59, этот вопрос будет решен.
есть много правильных / одинаковых ответов, но для будущих ссылок:
то же самое означает Tomcat 7. Имейте в виду, что обновление только версий ваших используемых фреймворков (как предлагается в других подобных вопросах) недостаточно.
вы также должны обновить версию плагина Tomcat. Что работало для меня, используя Java 7, было обновление до версии 2.2 tomcat7-maven-plugin (=Tomcat 7.0.47).
недавно я столкнулся с той же проблемой. Я был использование IntelliJx64 с Tomcat7.0.32 с jdk.8.0.102. Тогда не было никаких проблем. Я смог получить прямой доступ к моему развертыванию localhost: [port] не добавлять [веб_приложение] или / ROOT.
, когда Я пытался перейти на eclipse neon,я столкнулся с той же ошибкой, которая обсуждается, когда я пытался установить путь как пустую строку. когда я принудительная среда выполнения для Java7 и установка модулей на пустоту не решили проблему toe. Однако, когда я изменил свою установку tomcat на 7.072 и вручную изменил конфигурацию пути контекста на path="" проблема была решена в eclipse. (Вы можете управлять путем с помощью двойного щелчка сервера и переключения на вкладку модуля тоже.)
Мне интересно, почему IntelliJ не давал никаких проблем с той же ошибкой, которая должна была быть связана с установкой tomcat версия?
там также, кажется, связь с IDE в использовании.
я столкнулся с этим раньше, как другие, сказал:
upgrade jetty plugin
если вы используете
maven
на
jetty
плагин в pom.XML и обновить его до<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.0.v20150612</version> <configuration> <scanIntervalSeconds>3</scanIntervalSeconds> <httpConnector> <port>${jetty.port}</port> <idleTimeout>60000</idleTimeout> </httpConnector> <stopKey>foo</stopKey> <stopPort>${jetty.stop.port}</stopPort> </configuration> </plugin>
надеюсь, что это поможет вам