2012-07-06 77 views
0

我有以下java代碼。我正在使用XQJ使用XQJ API編寫一個測試XQuery程序。我已經下載了針對Java 1.0 Final Release的JSR-000225 XQuery API,並將xqjapi.jar添加到了我的類路徑中。 Java代碼很簡單,只要以下Xquery使用XQJ JSR 225

import javax.xml.xquery.XQConnection; 
import javax.xml.xquery.XQDataSource; 
import javax.xml.xquery.XQException; 

public class SaxonExtJavaObject { 

public static void main(String[] args) throws XQException, InstantiationException,  IllegalAccessException, ClassNotFoundException { 

    XQDataSource xqds = (XQDataSource) 
      Class.forName("com.jsr225.xqj").newInstance(); 

     // obtain a connection 
     XQConnection con = xqds.getConnection("usr", "passwd"); 
     System.out.println("connected"); 
} 
} 

我的問題是,我有以下異常

Exception in thread "main" java.lang.ClassNotFoundException: com.jsr225.xqj 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 

請有人幫我解決這個。

回答

3

您仍然需要一個產品(即XQuery處理器)充當實際的數據源;你可以在http://xqj.net/

就像JDBC,找到支持實現的列表,儘管有規定能夠與數據庫的操作界面,你需要一個實現,執行所選擇的任務(如MySQL和PostgreSQL或DB2)。

存在用於用Java編寫的XML數據庫XQJ實現:BaseXeXist
以及接口ZorbaMarkLogic(商用)和Sedna(用C/C++)。

在您的例子您參考使用撒克遜和XQJ撒克遜,信息可以在Saxon’s documentation

我希望這有助於澄清一些事情豆蔻被發現。

邁克爾

+1

邁克爾,你可能不知道這一點還,但左巴(C++)還提供了一個API XQJ:http://www.zorba-xquery.com/html/documentation/2.5.0/ xqj;) – 2012-07-06 14:22:39

+0

丹尼斯,哎呀,對不起,我知道;我只是沒有記住(更新我的答案!) – michael 2012-07-06 18:12:55

+0

感謝您的回答,但我真的需要使用saxon,我下載了saxon9.jar並將其引入到classpath中。問題尚未解決。我已經更新了代碼,現在導入的是import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.InputSource;導入net.sf.saxon.javax.xml.xquery.XQConnection; import net.sf.saxon.javax.xml.xquery.XQException; import net.sf.saxon.xqj.SaxonXQDataSource; 和數據源定義是 \t XQDataSource xqds = new SaxonXQDataSource(); 但它不承認任何進口。有什麼想法嗎? – Lucy 2012-07-06 18:17:17