通过java访问Prolog谓词

通过java访问Prolog谓词,java,prolog,swi-prolog,Java,Prolog,Swi Prolog,执行代码时出错 Variable X = new Variable(); Term goal= new Compound("parent", new Term []{new Atom("ali"),X}); Query q = new Query(goal); while (q.hasMoreElements()) { Hashtable binding = (Hashtable) q.nextElement(); Te

执行代码时出错

     Variable X = new Variable();
     Term goal= new Compound("parent", new Term []{new Atom("ali"),X});
     Query q = new Query(goal);
     while (q.hasMoreElements()) {
         Hashtable binding = (Hashtable) q.nextElement();
         Term t = (Term) binding.get(X);
         System.out.println(t);
     }
错误是

线程“main”java.lang.ClassCastException中的异常:无法将java.util.HashMap转换为java.util.Hashtable 位于newProj.MyMain.main(MyMain.java:18)

Prolog谓词是

parent(ali, rabia).
parent(shomaila, mubashir).
parent(shomaila, rabia).
parent(nadia, ali).  
parent(sumiya, shomaila).
parent(raheel, ali).
parent(anwar, shomaila).   
parent(sara, anwar).
parent(anwar, sana).
parent(sana,naveed). 
试试这个

    Query q =new Query("parent("ali",X)")

    java.util.Hashtable solution;

    while ( q.hasMoreSolutions() ){
        solution = q.nextSolution();
        System.out.println( "X = " + solution.get(X));
    }