34

我的文件顶部web.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
    version="2.5">

但是我仍然收到来自 Eclipse (Ganymede) 的警告,即没有检测到 XML 模式,并且没有警告模式违规。我的项目中的其他 XML 文件(例如Spring Framework配置文件)没有警告,并且确实给出了有关架构违规的正确警告。

如何使架构检查正常工作并希望警告消失?服务器运行正常。它似乎只是一个IDE问题。

4

6 回答 6

47

我也讨厌这个警告。特别是因为它出现在您尚未编写的 XML 文件中,但出于某种原因出现在您的项目中(如果您使用 MAVEN,那就太糟糕了)。

使用 Eclipse 3.5+,您可以轻松删除此验证规则。转到首选项--> XML--> XML 文件--> 验证并选择“忽略”。

您可能还需要执行 Project -> Clean 才能使验证警告消失。

替代文字

于 2010-02-24T11:05:51.410 回答
27

也许尝试:

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

代替:

http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd

此外,<!DOCTYPE ...>缺少:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<web-app
  xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <!-- ... -->
</web-app>
于 2008-11-26T21:13:39.077 回答
10

清除已存储验证文件的缓存。

Window > Preferences > General > Network Connections > Cache 然后全部删除。现在去验证文件,看看是否可以解决问题。

这发生在我身上,清除缓存以进行验证是让它再次正常运行的唯一方法。在这里找到了清除脏缓存的建议。

于 2011-09-17T03:53:39.367 回答
2

如果由于您的 XML 编辑器没有找到 XSD 文件而出现相同的(误导性的)错误消息,您可以添加一个目录条目。

您选择为架构指定的 URL,用于声明,例如

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                      http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"

为命名空间http://java.sun.com/xml/ns/j2ee指定架构文件的 URL (http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd) 。您现在可以使用 Eclipse 中的工作区目录重定向文件的位置:

Preferences -> XML -> XML Catalog -> Add..

采用

Key Type = Schema Location
Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd

然后您可以使用文件选择器在文件系统或工作区中实际选择 XSD 文件。

于 2012-06-02T01:21:53.993 回答
0

问题有两个方面:

  1. Eclipse 附带了许多著名的 XSD 的缓存。您提供的名称空间和/或位置与其中任何一个都不匹配。
  2. 因此 Eclipse 尝试在 Internet 上通过提供的 URI 寻找 XSD(可能正常工作)。不幸的是,在 Oracle 修改 java.sun.com 之后,这种机制似乎在 Eclipse 中超时(显然服务器重定向到主页,而不是简单地说“不存在,抱歉”)。

当您修改为 Java EE 5 的正确值时,将找到缓存中的条目,并且 Eclipse 会很高兴。

于 2013-01-29T12:59:11.573 回答
-5

将此添加<!DOCTYPE ...>到您的 xml 文件中。请放在下面<?xml ...>

<!DOCTYPE ??? PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

???= 您的根元素,现在如果您的子元素名称使用 html 保留字,您可能会遇到一些错误,您所要做的就是将它们更改为非保留字。

例如:
如果您当前的子元素是<img>,请将其更改为<pic>...

于 2009-10-22T18:04:15.647 回答