4

我尝试使用 Servlet 4.0 命名空间。该应用程序运行良好,但 IDEA 检测到错误:“必须声明元素 web-app””

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    ...
    ...
</web-app>

快照 (我不能直接发布图像。)

当我将版本更改为 3.1 时,它运行良好:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

根据Java EE: XML Schemas for Java EE Deployment Descriptors# Using Java EE Schemas

所有 Java EE 7 和更新的部署描述符模式共享命名空间http://xmlns.jcp.org/xml/ns/javaee/。每个模式文档都包含一个版本属性,该属性包含规范的版本。例如,Servlet 规范的 XML 模式文档包含版本属性值“3.1”,与规范的特定版本以及模式文档本身有关。

version="4.0"支持?我使用 IntelliJ IDEA 2017.2.5 + javax.servlet-api 4.0 + Apache Tomcat v9.0.1。


更新:我找到了 web.xml(in apache-tomcat-9.0.1/webapps/examples/WEB-INF/web.xml) 的示例:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">
4

3 回答 3

3

我迟到了,但我有一个尚未给出的可能解决方案。从我上面读到的,问题可能是 URL 使用计划 http 而不是 https。一些 IDE 拒绝通过不安全的连接下载资源。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xmlns="https://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee
                        https://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    id="WebApp_ID"
    version="4.0">
于 2021-06-08T09:44:30.237 回答
3

IntelliJ 没有找到模式,因为它们在指定的位置不可用。从这里下载以下模式: - web-app_4_0.xsd - web-common_4_0.xsd - web-fragment_4_0.xsd 然后选择http://xmlns.jcp.org/xml/ns/javaee,按 Alt+Enter 并选择“手动设置外部资源”并在文件字段中选择 web-app_4_0.xsd。

于 2019-08-16T00:58:49.503 回答
1

我认为即使在最新版本的 intellij IDEA 中,这也是一个已知错误(尽管他们声称 2017.3 终极版已准备好 Java EE8)。至少以下BUG仍然“未解决”: https ://youtrack.jetbrains.com/issue/IDEA-182745

于 2018-01-13T15:19:57.903 回答