我需要编写一个程序,以便使用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();
,但我无法解决,请有人帮忙。
答案 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上)。