JSF xmlns URI未在IntelliJ IDEA中注册

JSF xmlns URI未在IntelliJ IDEA中注册,jsf,intellij-idea,xhtml,Jsf,Intellij Idea,Xhtml,以下是我的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/19

以下是我的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。这会导致许多其他后续标记显示为红色,并出现错误
此处不允许元素“x”
。这是一张显示我的意思的图片:

尝试的解决方案: 在搜索解决方案时,似乎有一些具有相同问题的其他人通过“获取外部资源”解决了该问题。然而,这对我不起作用。对于冰面xmlns
xmlns:ace=”http://www.icefaces.org/icefaces/components“
我得到错误:
获取时出错http://www.icefaces.org/icefaces/components
。对于jstl xmlns
xmlns:c=”http://java.sun.com/jsp/jstl/core“
我得到一个错误:
在以下位置没有XML:http://java.sun.com/jsp/jstl/core

我还发现一些人通过删除
.IDEA
目录中的IntellijIDEA元数据文件
workspace.xml
解决了这个问题。这似乎暂时有效。。。但过了一段时间,问题似乎又出现了。我还必须重新配置几个我想避免的项目设置

任何帮助都将不胜感激。。我不太熟悉xmlns的东西,还是web应用开发的初学者。谢谢大家!

更新:
根据Mark Vedder的回答,我手动将外部资源添加到我的项目中,到目前为止,问题还没有重新出现。

对于未注册的资源,第一个解决方案是使用“获取外部资源”快速修复程序。如果失败,就像在本例中对您所做的那样(通常是因为“位置”仅在名称中),您需要手动配置它

手动配置

  • 如果资源(即
    .xsd
    .dtd
    等)存在于某个库jar中,请跳至步骤2。否则,请下载资源的副本。把它放在系统上方便的地方
  • 在IDEA中,将光标放在错误上,通过键入Alt+Enter并选择“手动设置外部资源”打开快速修复/意图菜单。(如果您没有此选项(基于IntelliJ IDEA版本),请转至下一节以获取说明。)
  • 如果资源在jar中,请选择
    Schemas
    选项卡并从相应的jar中选择资源。如果您下载了该文件,请选择
    Explorer
    选项卡(在Mac中可能名为Finder),然后导航到并选择您下载的文件
  • 单击OK并让IDEA索引资源
  • 通过IDE设置编辑或设置

  • 通过Ctrl+Alt+Enter或文件>设置打开设置对话框。
    • 要为所有将来的新项目进行配置以使此架构可用,请通过文件>其他设置>默认设置打开类似对话框
  • 项目设置
    部分中,找到
    架构和DTD
    节点
  • 配置所需的架构。右上角有添加、编辑和删除图标。与上面一样,您可以通过
    Schemas
    选项卡选择库中的文件,或者通过
    Explorer
    选项卡选择文件系统
  • 更新

    com.sun.faces:JSF impl
    jar的
    com/sun/faces/metadata/Taglib
    目录中可以找到各种JSF Taglib定义(针对JSF 2.x及以上版本)。
    jsf impl
    JAR文件可以从其他地方下载。

    如果您使用的是“IntelliJ Idea”,请单击Ctrl+Alt+Shift+S打开“项目结构”对话框,在工件(类似的东西)错误通知中查找
    jsf not found
    ,请单击FixIt选项并将JSF范围更改为
    提供的
    。它解决了我的问题。

    您还可以添加
    “urn:import:”

    例如:
    xmlns:d=“urn:import:com.mypackage.mylovelycode”

    当您没有附加JSF Mojarro库时,会发生此错误。在项目中下载并添加该库

    File> Project Structure> Library 
    

    将JSF添加到库中

    我对icefaces资源也有同样的问题。
    解决此问题的一种方法是为项目(如果您还没有)提供IceFaces框架支持(右键单击项目名称)。
    在我的例子中,我使用的是3.3.0,然后在添加框架支持表单中设置了下载。
    Intellij下载了3.1.0,IDE在下载后立即识别资源。后来我再次设置了3.3.0版本。
    因此,我认为重新下载框架就足够了,资源将下载到META-INF文件夹中。


    问候。-

    我也有同样的问题。。。但在我的例子中,问题是我错误地保存了扩展名为“.xml”的文件。将其更改为“.xhtml”解决了这个问题

    我尝试了这里建议的每一件事,以使intellij能够识别我的jsf的正确版本。最后,我发现在我的web项目maven依赖项中没有直接引用jsfapi。换言之,加入

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

    给我的pom,修好了。令人困惑的是intellij能够解析jsf符号的一个子集,这使您认为它看到了jar,尽管jar的版本是错误的。

    一个可能的问题可能是“Java EE:Java Server Faces”插件被禁用。您可以通过浏览来启用它
    Settings>Plugins并在Installed选项卡上搜索Java服务器面

    好的,自从重新加载我的项目后,问题似乎又消失了。我能够根据您的指示添加一个外部资源,但问题至少暂时没有重新出现。所以我会投票支持你的解决方案,如果它在接下来的几个小时内不再出现,我会接受它。另外,我将在