History | Edit

Question:

I am able to access my XML Database in the Data Source Explorer and open files for reading but when I try to save changes to a file back into the database, I receive the following error: "Cannot save the file. DTD factory class org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl does not extend from DTDDVFactory". How can I fix this?

Answer:

xhive.jar contains a MANIFEST.MF with a classpath:
Class-Path: core/antlr-runtime.jar core/aspectjrt.jar core/fastutil-shrinked.jar
    core/google-collect.jar core/icu4j.jar core/lucene-regex.jar core/lucene.jar
    core/serializer.jar core/xalan.jar core/xercesImpl.jar
Since the driver was configured to use xhive.jar directly from the xDB installation (where many other JARS are located), core/xercesImpl.jar from the xDB installation directory is loaded even though it is not specified in the list of JARS from the data source driver configuration (it is in the classpath from xhive.jar - MANIFEST.MF). A simple workaround for this issue is to copy ONLY the JAR files used in the driver configuration to a separate folder and configure the data source driver to use them from there.