Таинственные ошибки валидации Eclipse JSP - PullRequest
49 голосов
/ 24 сентября 2010

Eclipse (Helios) иногда отмечает допустимый вид содержимого JSP как имеющий ошибки. Кажется, что он часто ломается, когда я использую тег . Например, в JSP с таким содержимым:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>

<c:if test="${1 == 1}">
something
</c:if>

</body>
</html>

Следующие ошибки отображаются на вкладке «Проблемы» после компиляции:

  • Несовместимые типы операндов String и int line 1
  • javax.servlet.jsp.JspException не может разрешиться в строку типа 1
  • javax.servlet.jsp.PageContext не может разрешиться в строку типа 1

Код работает нормально. Есть ли проблемы с проверкой JSP, я упустил что-то очевидное или это указывает на то, что что-то настроено неправильно.

Ответы [ 16 ]

47 голосов
/ 02 августа 2011

Ну, я нашел, как решить эту ошибку. Добавьте это к вашей зависимости Maven (pom.xml):

<!-- dependency to fix JSPServletException -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>jsp-api</artifactId>
        <version>6.0.32</version>
        <scope>provided</scope>               
    </dependency>

Прокомментируйте, если вы найдете это полезным, насколько это помогло мне.

36 голосов
/ 24 сентября 2010

На основании комментариев я закончил тем, что отключил часть проверки JSP, которая исправила это.

  1. Перейдите в «Проект-> Свойства-> Проверка».
  2. Нажмите «Настроить параметры рабочего пространства ...».
  3. Отменить выбор параметров для JSP Syntax Validator (как в ручном режиме, так и в режиме сборки).

Я надеялся, что что-то упустил, и был способчтобы исправить это, но я должен признать, что проверка JSP является ненужной.

21 голосов
/ 12 марта 2012

У меня была такая же проблема, проблема в библиотеке jsp-api, вы можете добавить зависимость к вашему pom (как объяснено в других ответах) или вы также можете добавить цель run-time и eclipse автоматически добавят эту библиотеку в ваш путь к классам:

Project -> Properties -> Targeted Runtimes 

И выберите свой сервер.

5 голосов
/ 01 июня 2011

Для исправления:
- javax.servlet.jsp. * Нужен jsp-api.jar
- javax.servlet.http. * Нужен servlet-api.jar

Вам нужнодобавить эти библиотеки в путь Java Build в настройках проекта.Эти библиотеки можно найти в каталоге tomcat / lib (для Tomcat 6.0).

3 голосов
/ 16 ноября 2012

Это старый вопрос, но я подумал, что мог бы упомянуть, что получаю его и в Juno на Mac OS X - особенно чаще всего после того, как я внешне изменю файл и затем обновлю проект в Eclipse. Подчеркивает во всех нечетных местах, даже на полпути между словами в комментариях JSP.

Может ли (вероятно ?!) быть связана с ошибкой 376926 , которая, по-видимому, была исправлена ​​чуть более недели назад?

2 голосов
/ 25 июня 2012

Для Tomcat 7.0.x вам необходимо следующее в вашей помпе

<properties>
    <org.apache.tomcat.version>7.0.28</org.apache.tomcat.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jsp-api</artifactId>
        <version>${org.apache.tomcat.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
2 голосов
/ 22 августа 2011

Решением для зависимостей затмения, которые не следует развертывать, является добавление контейнера UserLibrary и включение его в зависимые проекты.

  1. Создать dir, например, / home / user * / eclipse-deps / и скопировать jsp-api.jar из * / tomcat / lib dir
  2. В Eclipse перейдите в свойства проекта-> путь сборки и создайте новую "UserLibrary", например. IdeDeps.
  3. Включите / home / user / eclipse-deps / в библиотеку IdeDeps и включите пользовательскую библиотеку во все проекты, которые зависят от jsp-api.jar (в classpath: )

Вы можете сделать это для всех * .jar, которые не должны быть развернуты, но затмение необходимо для проверки.

1 голос
/ 26 июня 2014

Гораздо проще -

select the project -> Properties -> Java Build Path -> Libraries Tab

Выбрать add Libraries.Оттуда выберите Server Runtime.В нем будут перечислены все среды выполнения сервера, которые вы настроили.Оттуда выберите среду выполнения сервера, с которой вы связали свой проект.

Это восстановит и повторно проверит проект, и все эти призрачные ошибки будут удалены.

Надеюсь, это поможет.

1 голос
/ 18 ноября 2011

Вам нужно включить jap-api.jar в ваш путь к классам.

1 голос
/ 13 июля 2011

У меня возникла та же проблема, и в конце концов она заработала, переключившись (с Maven) на версию 2.3 servlet-api:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.3</version>
    <scope>provided</scope>
</dependency>

Видимо, версии 2.4 и выше не имеют javax.servlet.JSP построить больше.Возможно, вы сможете найти эту библиотеку в другом пакете, если вы все еще хотите использовать версию 2.4 или выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...