web-app_2_5.xsd在eclipse中验证web.xml时显示错误

时间:2011-01-27 12:33:30

标签: java xml java-ee

我不知道我能做些什么导致这种情况,因为我花在编程上的时间已经延长,我已经忘记了我可能做过的事情。但现在当我加载Eclipse时,它说:

The errors below were detected when validating the file "web-app_2_5.xsd" via the file "web.xml".  In most cases these errors can be detected by validating "web-app_2_5.xsd" directly.  However it is possible that errors will only occur when web-app_2_5.xsd is validated in the context of web.xml. 
s4s-elt-character: Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'JDK 6 XML-related APIs'.
The entity name must immediately follow the '&' in the entity reference.

我的前几行web.xml看起来是这样的。

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

我已经读过,对于从中检索文件的服务器或缓存,可能会出错。我已经禁用并清除了缓存,据我所知,除非他们切换到oracle.com网址并且我还没有找到它,否则其他人都在使用它。

任何想法都将不胜感激。

4 个答案:

答案 0 :(得分:24)

安德鲁,我担心你的命名空间不正确。我认为版本2.5应该在javaee名称空间(JDK,Java 1.5和1.6)下,而不是j2ee(J2SDK,Java 1.4)。

所以替换

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

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

答案 1 :(得分:3)

http://www.reddit.com/r/programming/comments/f9sxu。问题是甲骨文。 我无法通过连接到互联网部署在SGES 2.1.1上。当我关闭它时,部署很慢,但成功。似乎验证器尝试刷新缓存的模式并从schemaLocation URL下载它们。

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
GET /xml/ns/javaee/web-app_2_5.xsd ... 
HTTP/1.1 301 Moved Permanently to Location: 
  http://download.oracle.com/javase/6/docs/technotes/guides/xml/index.html

但是没有这样的架构!

我会尝试找到一些好的解决方案,但最好的方法是在Oracle中打人......

编辑:此时已修复(2010年1月27日,欧洲中部时间20:00),Oracle返回架构 - 您可以使用wget进行检查。浏览器被重定向到docs。尼斯: - )

答案 2 :(得分:1)

请查看您的web.xml

是否有任何'&amp;'标志,后跟一个已知的XML实体? &uuml;是HTML-Entities,不是 XML-Entites。

答案 3 :(得分:1)

或编写自己的实体解析器,在本地查找这些实体

以防万一,例如,hibernate,以适当的方式指向架构位置就足够了: hibernate的DTDEntityResolver

的摘录
private static final String USER_NAMESPACE = "classpath://";
 ...
public InputSource resolveEntity(String publicId, String systemId) {
 ...
else if ( systemId.startsWith( USER_NAMESPACE ) ) {
...

在eclipse的情况下,您可以在以下位置指向本地xsd:Preferences - &gt; XML - &gt; XML Catalog。