URI JSF xmlns не зарегистрирован в IntelliJ IDEA

вот начало моего файла JSF:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ace="http://www.icefaces.org/icefaces/components"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
, http://www.icefaces.org/icefaces/components и http://java.sun.com/jsp/jstl/core выделены красным цветом с ошибкой URI is not registered. Это приводит к появлению многих других последующих тегов красным цветом с ошибками element 'x' is not allowed here. Вот изображение, показывающее, что я имею в виду:

xmlns and tags appear in red

попытки решения:

при поиске решения появились некоторые другие с той же проблемой, решив ее, выполнив "выборку внешнего ресурса". Однако этого не произошло. работать на меня. Для icefaces xmlns xmlns:ace="http://www.icefaces.org/icefaces/components" я получаю сообщение об ошибке:Error while fetching http://www.icefaces.org/icefaces/components. И для jstl xmlns xmlns:c="http://java.sun.com/jsp/jstl/core" Я получаю сообщение об ошибке:No XML at the location: http://java.sun.com/jsp/jstl/core.

Я также нашел, что некоторые люди решили его, удалив файл метаданных IntelliJ IDEA workspace.xml на

7 ответов


с незарегистрированными ресурсами первым решением является использование quickfix" Fetch External Resource". Если это не удается, как это было для вас в этом случае (обычно потому, что" местоположение " находится только в названии), вам нужно вручную настроить его.

Вручную Настроить

  1. если ресурс (т. е. .xsd, .dtd, etc.) существует в одной из ваших библиотек jars, перейдите к Шагу 2. В противном случае загрузите копию ресурса. Положи его куда-нибудь. удобно в вашей системе.
  2. в IDEA, с курсором на ошибку, откройте меню быстрого исправления / намерения, введя Alt+ Enter и выберите "вручную настроить внешний ресурс". (Если у вас нет этой опции (на основе версии IntelliJ IDEA), перейдите к следующему разделу для получения инструкций.)
  3. если ресурс находится в банке, выберите Schemas tab и выберите ресурс из соответствующей банки. Если вы загрузили его, выберите Explorer вкладка (может называться Finder в Mac) и выберите файл, который вы скачали.
  4. нажмите OK и позвольте IDEA индексировать ресурс.

для редактирования или установки через настройки IDE

  1. откройте диалог настроек через Ctrl+Alt+ Enter или Настройки Файл >.
    • чтобы настроить для всех будущих новых проектов, чтобы эта схема была доступна, откройте аналогичную диалог через Файл > Другие Настройки > Настройки По Умолчанию
  2. на найти Schemas and DTDs узел.
  3. настройте нужную схему. В правом верхнем углу находятся значки добавления, редактирования и удаления. Как и выше, вы можете выбрать файл в библиотеке через Schemas tab или ваша файловая система через Explorer tab.

обновление

различные определения JSF Taglib (для JSF 2.икс и выше) можно найти в на com.sun.faces:jsf-impl jar. The jsf-impl файл JAR можно загрузить из maven central в других местах.


Если вы используете "IntelliJ Idea", откройте диалоговое окно" структура проекта", нажав Ctrl+Alt+Shift+S искать JSF not found в уведомлении об ошибке артефакта (что-то вроде этого) нажмите кнопку "Исправить" и измените область JSF на provided. Это исправило мою проблему.


эта ошибка возникает, когда вы не присоединяете библиотеку JSF Mojarro. Загрузите и добавьте эту библиотеку в проект.

File> Project Structure> Library 

добавить JSF в библиотеку.


У меня была такая же проблема с ресурсами icefaces.
Один из способов исправить это-предоставить проекту (опять же, если вы этого еще не сделали) поддержку icefaces framework (щелкните правой кнопкой мыши на имени проекта).
В моем случае я использовал 3.3.0, затем я установил загрузку в форме поддержки Add Framework.
Intellij загрузил 3.1.0, и IDE распознает ресурс сразу после этого. Позже я снова установил версию 3.3.0.
Итак, я думаю, достаточно снова загрузить фреймворк, и ресурсы будут загружены в папку META-INF.

С уважением.-


Я пробовал все, что предлагалось здесь, чтобы intellij распознал правильную версию моего jsf. В конце я обнаружил, что у меня нет прямой ссылки в зависимостях Maven моего веб-проекта на JSF-api. Другими словами, добавление

<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-api</artifactId>
  <version>2.1.29-08</version>
  <scope>provided</scope>
</dependency>

к моему помпону, исправил его. Запутанная вещь заключается в том, что intellij смог разрешить подмножество символов jsf, что заставляет вас думать, что jar был замечен им, хотя и неправильной версией jar.


вы также можете добавить "urn:import:<url>"

пример: xmlns:d="urn:import:com.mypackage.mylovelycode"


У меня была та же проблема... но в моем случае, проблема была в том, что по ошибке я сохранил файл с расширением ".XML." Превращение в ".xhtml " решил проблему