【问题标题】:eclipse on maven project warning 'DTD or XML schema'Eclipse 上的 Maven 项目警告“DTD 或 XML 模式”
【发布时间】:2010-12-31 03:46:11
【问题描述】:
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>

【问题讨论】:

标签: java eclipse google-app-engine maven-2 maven


【解决方案1】:

初步答案(2009 年 12 月)

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

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

或者:

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


更新(2012 年 2 月)

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

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

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

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

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

  • bug 218326:“问题视图中系统文件的“无语法约束”警告”确实采用了“排除路线”
  • bug 331749 抱怨“没有语法限制”,即使目录被排除在外

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

【讨论】:

【解决方案2】:

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

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

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

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

如何包含它?

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

【讨论】:

    【解决方案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,因为我看到了相同的行为。

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

    【讨论】:

      【解决方案4】:

      这只是一个警告。在首选项:XML/XML Files/Validation 中,可以关闭它。

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2010-09-24
          • 2014-12-29
          • 2012-10-02
          • 2011-03-02
          • 2010-09-26
          • 2015-03-05
          • 2015-02-27
          • 1970-01-01
          • 2015-04-04
          相关资源
          最近更新 更多