1

我需要编写一个程序,以便在 java 中使用saxon. 我是 XQuery 和撒克逊的新手。我已经下载saxon-xqj-8.9.0.4.jar了 saxon9.jar 并将这两个文件添加到类路径中。以下是我的简单测试代码

 import net.sf.saxon.javax.xml.xquery.XQConnection;
 import net.sf.saxon.javax.xml.xquery.XQException;
 import net.sf.saxon.xqj.SaxonXQDataSource;

 public class SaxonExtJavaObject {
     public String f() {

    return "Some string";
    }

   public static void main(String[] args) throws XQException {

        SaxonXQDataSource xqds = new SaxonXQDataSource();
        XQConnection xqc = xqds.getConnection();
        System.out.println("connected");
}

}

问题是它给出了以下异常

   Exception in thread "main" java.lang.NoSuchMethodError: net.sf.saxon.Configuration.makeSchemaAwareConfiguration(Ljava/lang/ClassLoader;Ljava/lang/String;)Lnet/sf/saxon/Configuration;
at net.sf.saxon.xqj.SaxonXQDataSource.<init>(SaxonXQDataSource.java:34)
at SaxonExtJavaObject.main(SaxonExtJavaObject.java:17)

我认为问题是因为SaxonXQDataSource xqds = new SaxonXQDataSource();但我无法解决,有人可以帮助他们吗?

4

1 回答 1

2

JAR 文件 saxon-xqj-8.9.0.4.jar 是 Saxon 8.9.0.4 的一部分,而您的 saxon9.jar 必须来自 9.0 或更高版本。您不能混合来自不同 Saxon 版本的不同 JAR 文件。

在某个阶段,我忘记了 XQJ 代码何时被合并到主要的 Saxon JAR 文件中,因此您不再需要单独的 JAR。它最初分开的原因是它具有主 JAR 文件中不存在的依赖项(在 JDK 上)。

于 2012-07-06T08:09:54.817 回答