我想更新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>
这是我的蚂蚁目标。
<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(The 系统找不到指定的文件)
此DTD存在于名为Utils.jar
的Jar文件中。在google'ing之后我找到XmlCatalog
任务并使用我写下目标版本的下面版本。(不确定我是否已经预期使用XmlCatalog
)。 Utils.jar
不在Ant的类路径中,因此尝试使用<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] at org.apache.tools.ant.types.XMLCatalog $ InternalResolver.resolveEntity(XMLCatalog.java:811) [xmltask] at org.apache.tools.ant.types.XMLCatalog.resolveEntity(XMLCatalog.java:385) [xmltask] at com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:110) [xmltask] at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:994) [xmltask] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ DTDDriver.dispatch(XMLDocumentScannerImpl.java:1149) [xmltask] at 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] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) [xmltask] at 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] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
即使将Utils.jar
放到$ANT_HOME/lib
之后,我仍然会看到上述错误。任何帮助都非常感谢。您可以建议在Ant中实现此目的的任何替代方法。
提前致谢。