1

我想更新debug.classpath财产的价值。我XmlTask用来做操作。但是,我正在运行DTD找不到问题。

这是我的目标 XML 文件。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration>
     <Property name="debug.classpath" value="<changeme>"
</Configuration>

这是我的 Ant 目标。

<target name="configure" >
      <xmltask source="myxml.xml">
            <attr path="//Property[@name='debug.classpath']" attr="value"  value="New Value"/>
      </xmltask>    
</target>

当我执行这个目标时,我得到以下错误。

[xmltask] java.io.FileNotFoundException: D:\utils\xconf.dtd(系统找不到指定的文件)

此 DTD 存在于一个名为 .jar 的 Jar 文件中Utils.jar。谷歌搜索后,我找到XmlCatalog了任务并使用了我在目标版本下面编写的任务。(不确定我是否有意使用XmlCatalog)。不在 Ant的Utils.jar类路径中,因此尝试使用<classpath>.

<target name="configure">
    <xmlcatalog id="XconfDtd">
        <classpath>
            <pathelement location="D:/libs/Utils.jar"/>
        </classpath>
        <dtd location="xconf.dtd" />
    </xmlcatalog>
    <xmltask source="${env.WT_HOME}/codebase/wt.properties.xconf">
        <xmlcatalog refid="XconfDtd" />
        <attr path="//Property[@name='debug.classpath']" attr="value" value="New Value" />
    </xmltask>
</target>

但是,当我执行此目标时,出现以下错误

[xmltask] java.lang.NullPointerException [xmltask] at org.apache.tools.ant.types.XMLCatalog.findMatchingEntry(XMLCatalog.java:592) [xmltask] at org.apache.tools.ant.types.XMLCatalog.access$000 (XMLCatalog.java:119) [xmltask] 在 org.apache.tools.ant.types.XMLCatalog$InternalResolver.resolveEntity(XMLCatalog.java:811) [xmltask] 在 org.apache.tools.ant.types.XMLCatalog.resolveEntity (XMLCatalog.java:385) [xmltask] 在 com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:110) [xmltask] 在 com.sun.org.apache.xerces.internal .impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:994) [xmltask] 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1149) [xmltask] 在 com.sun .org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1047) [xmltask] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java: 960) [xmltask] 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) [xmltask] 在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl。 next(XMLNSDocumentScannerImpl.java:116) [xmltask] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488) [xmltask] at com.sun.org.apache.xerces。 internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) [xmltask] 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.爪哇:764)

即使在投入之后Utils.jar$ANT_HOME/lib仍然看到上述错误。非常感谢任何帮助。您可以建议在 Ant 中实现此目的的任何替代方法。

提前致谢。

4

0 回答 0