Saxon XQJ API中的DataSource声明

时间:2012-07-05 22:42:27

标签: xslt xquery saxon

我需要编写一个程序,以便使用saxon在java中实现XQuery。我是XQuery和saxon的新手。我已经下载了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();,但我无法解决,请有人帮忙。

1 个答案:

答案 0 :(得分: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上)。