Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java web.xml的伪Eclipse警告:“0”;未检测到文档的语法约束(DTD或XML架构)。”;_Java_Eclipse_Xsd_Warnings - Fatal编程技术网

Java web.xml的伪Eclipse警告:“0”;未检测到文档的语法约束(DTD或XML架构)。”;

Java web.xml的伪Eclipse警告:“0”;未检测到文档的语法约束(DTD或XML架构)。”;,java,eclipse,xsd,warnings,Java,Eclipse,Xsd,Warnings,我的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

我的
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文件(例如配置文件)没有此警告,并且对模式冲突给出了正确的警告

我如何让模式检查工作,并希望警告消失?服务器运行正常。这似乎是一个IDE问题。

或许可以尝试:

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

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

此外,缺少

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

将此
添加到xml文件中。请把它放在
下面:


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

例如:

如果您当前的子元素是
,请将其更改为
..

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

使用Eclipse3.5+可以轻松删除此验证规则。转到首选项-->XML-->XML文件-->验证,然后选择“忽略”

您可能还需要执行一个项目->清理,验证警告才会消失


清除缓存中存储的验证文件

窗口>首选项>常规>网络连接>缓存,然后删除所有。现在去验证这个文件,看看这是否能解决问题

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

如果由于XML编辑器未找到XSD文件而出现相同(错误引导)错误消息,则可以添加目录项

您可以为模式选择指定的URL,例如

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

Preferences -> XML -> XML Catalog -> Add..
使用


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

问题有两个方面:

  • Eclipse附带了许多著名的XSD缓存。您提供的名称空间和/或位置与其中任何一个都不匹配
  • 因此Eclipse试图在internet上提供的URI上查找XSD(可能正好有效)。不幸的是,在Oracle修改了java.sun.com之后,这个机制似乎在Eclipse中超时了(显然服务器会重定向到主页,而不是简单地说“不存在,对不起”)

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

    该文件是一个web.xml文件,而不是一个xhtml文件。这对我很有用。在某个时候,我的Eclipse缓存了一个伪造的副本,该副本导致我的所有web.xml文件验证失败。当我的Spring bean文件开始抛出此错误时,这对我也起到了作用。我广泛使用Maven,在Maven文件上不会出现此错误,除非它们位于目标目录中。在这种情况下,最好在目标目录中添加一条规则来禁用验证,而不是忽略错误。这并不能解决问题,只是隐藏症状。我不会在Eclipse中执行此操作,因为这只是屏蔽/隐藏错误,不会解决错误。如果您只使用Eclipse构建Android应用程序,那么这个“解决方案”是可以接受的。但是,如果您使用Eclipse构建其他Java项目—JSF等—如果XML验证被“关闭”,它将破坏这些项目。所以要小心。真正的解决方案是Oracle、Google和IBM用更新的DTD和模式更新他们的软件。我们必须一直处理格式不正确的第三方文件,尤其是xml文件,是的,如果他们修复了这些文件会很好,但他们没有,所以我只需要关闭无意义的警告,这样我就可以看到重要的、真实的警告。此修复程序确实帮助了我,谢谢。您还需要将xmlns从:-更改为:-
    xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd“
    。。。在进行更改后,不要忘记“验证”有问题的文件。您也可以看到我的答案。基本上,只需编写xml以符合所需规则
    Preferences -> XML -> XML Catalog -> Add..
    
    Key Type = Schema Location
    Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd