16
Description Resource    Path    Location    Type
No grammar constraints (DTD or XML schema) detected for the document.   TEST-net.kindleit.gae.example.server.MessageRepositoryTest.xml  /projecttest-gae-example/target/surefire-reports    line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   appengine-web.xml   /projecttest-gae-example/src/main/webapp/WEB-INF    line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   appengine-web.xml   /projecttest-gae-example/target/projecttest-gae-example-1.0-SNAPSHOT/WEB-INF    line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   datastore-indexes-auto.xml  /projecttest-gae-example/WEB-INF/appengine-generated    line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   jdoconfig.xml   /projecttest-gae-example/src/main/resources/META-INF    line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   jdoconfig.xml   /projecttest-gae-example/target/projecttest-gae-example-1.0-SNAPSHOT/WEB-INF/classes/META-INF   line 1  XML Problem
No grammar constraints (DTD or XML schema) detected for the document.   webapp-cache.xml    /projecttest-gae-example/target/war/work    line 1  XML Problem

如何在eclipse上解决上述问题?我的项目是基于 Maven 的。是因为我错过了一些 dtd 文件吗?如何包含它?

示例 jdoconfig.xml

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">

    <persistence-manager-factory name="transactions-optional">
        <property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
        <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
        <property name="javax.jdo.option.NontransactionalRead" value="true"/>
        <property name="javax.jdo.option.NontransactionalWrite" value="true"/>
        <property name="javax.jdo.option.RetainValues" value="true"/>
        <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
    </persistence-manager-factory>
</jdoconfig>
4

5 回答 5

25

初步答案(2009 年 12 月)

如果您有 WTP(包括 XML 部分):

Preferences->Validation->XML Validator-> unclick manual and/or build应该防止 eclipse 检查 DTD

或者:

从首选项页面中,选择 XML > XML 文件。在“验证文件”部分下,您可以将下拉菜单中的严重性从警告更改为忽略。请注意,这适用于所有 XML 文件,而不仅仅是build.xml. build.xml但是,如果您仍然希望其他 XML 文件出现此警告,则可以只添加到排除过滤器。

替代文字


更新(2012 年 2 月)

有人在评论(现已删除)中提出了您应该永远不要忽略警告的有效观点。
但是修复它们!

当问到怎么做时,他继续说(强调我的):

我会修复 Eclipse,因为这显然是糟糕设计的标志。
例如,我可能会向 Eclipse Foundation 错误跟踪器报告一个错误。
Eclipse 需要为“已知”不需要 XML 语法的 Spring/Java EE 项目文件添加“健全的”默认值
要么文件有问题,要么 Eclipse 在某处损坏。
我遇到的三个问题:

  1. 带有Log4j.xml文件,说它找不到 XML 定义,log4j.dtd尽管该文件位于验证器查找的系统路径中
  2. Antbuild.xml文件说我没有语法限制
  3. 由于某种原因,我无法清理项目。

实际上存在围绕这些警告讨论策略/错误的错误:

显然,需要对这些警告的管理进行更多修复。

于 2009-12-30T16:16:18.007 回答
4

如何在eclipse上解决上述问题?

这更像是一个警告,而不是一个真正的问题。您可以告诉 Eclipse 在验证文件时忽略它(Windows > Preferences > XML > XML Files > Editor > Validation)。

是因为我错过了一些 dtd 文件吗?

不,这是因为 XML 文档没有声明任何 DTD 或 XSD。

如何包含它?

您当然可以手动添加声明(如果您知道要添加哪个 DTD 或 Schema)。或者您可以告诉 Eclipse 忽略前面提到的没有指定语法的事实。或者你可以忍受它。

于 2009-12-30T16:37:09.943 回答
3

正如其他人所暗示的那样,每个警告都应该单独处理。

对于您的具体警告 -

No grammar constraints (DTD or XML schema) detected for the document.   TEST-net.kindleit.gae.example.server.MessageRepositoryTest.xml  /projecttest-gae-example/target/surefire-reports

由于我看到了相同的行为,因此我已将针对 Surefire 的错误记录为SUREFIRE-964 。

要仅排除这些警告,您可以转到 Preferences > Validation。找到 XML Validator 并单击设置。选择排除组,单击添加规则,选择文件夹或文件名,然后单击浏览器文件夹以选择目标/surefire-reports。此时,Eclipse 应该提示您需要重新构建和/或验证。或者,您可以右键单击您的项目并选择验证。

于 2013-02-21T18:58:01.930 回答
0

这只是一个警告。在首选项:XML/XML 文件/验证中,您可以将其关闭。

于 2009-12-30T16:17:09.017 回答
0

我认为关闭它不是一个好主意。当您开始解析等时,您可能会遇到问题。最好将 DTD 包含在 XML 目录中。

转到 Windows -> Preferences -> XML -> XML Catalog 添加缺少的 DTD 作为用户指定的条目,eclipse 将验证它而不会出现任何问题。之后您可能需要开始验证文件。

您也可以在http://juliendkim.blogspot.de/2012/09/how-to-fix-log4jdtd-xml-problem-in.html找到此解决方案,该解决方案描述了 log4j.dtd 的问题。

于 2013-03-01T08:49:40.567 回答