Подтвердить что ты не робот

Загадочные ошибки JSP проверки Eclipse

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

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

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

</body>
</html>

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Ну, я нашел, как решить эту ошибку. Добавьте это в свою зависимость от 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>

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

Ответ 3

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

Project -> Properties -> Targeted Runtimes 

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

Ответ 4

Чтобы исправить:
- javax.servlet.jsp. * нужен jsp-api.jar
- javax.servlet.http. * нужен servlet-api.jar

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

Ответ 5

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

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

Ответ 6

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

  • Создайте dir e.g/home/user */eclipse-deps/и скопируйте jsp-api.jar из */tomcat/lib dir
  • В Eclipse перейдите к свойствам проекта → путь сборки и создайте новую "UserLibrary", например. IdeDeps.
  • Включить/home/user/eclipse-deps/в библиотеку IdeDeps и включить библиотеку пользователей во все проекты, зависящие от jsp-api.jar(в classpath: < classpathentry kind = "con" path = "org.eclipse.jdt.USER_LIBRARY/IdeDeps" / > )

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

Ответ 7

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

<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>

Ответ 8

Попробуйте проверить путь к проекту. Похоже, что у вас нет библиотеки JSP в вашем проекте (отсюда невозможно исключить "JspException" ) или что ваша версия библиотеки не такая же, как версия компилятора JSP.

Библиотека включена по умолчанию на сервере приложений, на котором вы развертываете свое приложение, поэтому код отлично работает при развертывании. Однако, если внутреннему компилятору Eclipse отсутствует библиотека (или есть некорректная версия), редактор Eclipse показывает вам ошибку, которая не существует на сервере приложений.

Ответ 9

У меня была такая же проблема, и в итоге мне удалось ее запустить, переключив (с Maven) на версию 2.3 сервлета-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 или выше.

Ответ 10

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

Ответ 11

Гораздо проще использовать

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

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

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

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

Ответ 12

Добавление jsp-api.jar в ваш путь к классу сборки будет исправлять его. jsp-api.jar находится под common\lib для tomcat 5.x

Ответ 13

Я также вижу ту же проблему во время перехода на Maven (с m2e), получить ошибку, например, "javax.servlet.http не может быть разрешен" и некоторые Spring теги undefined предупреждение. наконец, я нахожу это, потому что версия java (v1.6) в моей конфигурации сборки не такая же, как в конфигурации фасетов (v1.7). после изменения v1.7 до v1.6 проблема исчезает.

Ответ 14

У меня была та же проблема, но оба jsp-api.jar и servlet-api.jar уже находились в пути сборки. Отключение JSP Syntax Validator также не помогло.

Вместо этого мне пришлось отключить JSP Content Validator, оставив валидатор синтаксиса включенным. Я все еще подчеркиваю код в своем JSP, но не красный крест, указывающий на ошибку компиляции, и что точка:)

Ответ 15

Как многие из вас упомянули, проблемы касаются пути сборки и недостающих библиотек. Я нашел очень простое исправление этой проблемы. Вот решение: В разделе "Java Build Path" в eclipse перейдите на вкладку "Заказ и экспорт" и убедитесь, что в библиотеке "Apache Tomcat v7.0" (или в зависимости от версии Tomcat, которую вы установили с помощью eclipse). Это мгновенно устраняет проблему. Никаких хлопот ни с чем другим.: -)

В этом случае не нужно также отключать проверку.

Ответ 16

Для меня, когда я печатал строку вручную, у меня появилась ошибка, пока я не закрыл тег, но ошибка не исчезла. Я нашел строку кода, которая была похожа, и я удалил оскорбительный код, скопировал и вставил хороший код, а затем внеся изменения внутри тега по мере необходимости. Больше никаких ошибок!!! Не идеальное решение, но это сработало для меня.