After installing SWI-Prolog on my computer, I continued to use one of my examples and recognized this particular beauty:
run: Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\swipl\bin\jpl.dll: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at jpl.JPL.loadNativeLibrary(JPL.java:100) at jpl.fli.Prolog.<clinit>(Prolog.java:85) at jpl.Query.open(Query.java:286) at jpl.Util.textToTerm(Util.java:162) at jpl.Query.<init>(Query.java:198) at main.ProjetoPLP.main(ProjetoPLP.java:12) Java Result: 1
I checked and there is a jpl.dll file inside the above folder, so I'm not quite sure what is going on here. I checked old questions on this website and on the Internet, but none of them gave any convincing answer.
Does anyone know how to do this?
EDIT:
Here is the code I'm trying to run in case this helps.
package main; import java.io.*; import java.util.Hashtable; import jpl.Query; import org.apache.commons.io.*; public class ProjetoPLP { private static void loadJPLDll() { try { InputStream in = ProjetoPLP.class.getResourceAsStream("/test/resources/jpl.dll"); File fileOut = new File("jpl.dll"); OutputStream out = FileUtils.openOutputStream(fileOut); IOUtils.copy(in, out); in.close(); out.close(); System.load(fileOut.getAbsolutePath());// loading goes here } catch (Exception e) { e.printStackTrace(); } } public static void main(String args[] ) { loadJPLDll(); String t1 = "consult('family.pl')"; Query q1 = new Query(t1); System.out.println( t1 + " " + (q1.hasSolution() ? "succeeded" : "failed") ); //-------------------------------------------------- String t2 = "child_of(joe, ralf)"; Query q2 = new Query(t2); System.out.println( t2 + " is " + (q2.hasSolution() ? "provable" : "not provable") ); //-------------------------------------------------- String t3 = "descendent_of(steve, ralf)"; Query q3 = new Query(t3); System.out.println( t3 + " is " +(q3.hasSolution() ? "provable" : "not provable") ); //-------------------------------------------------- String t4 = "descendent_of(X, ralf)"; Query q4 = new Query(t4); System.out.println( "first solution of " + t4 + ": X = " + q4.oneSolution().get("X")); //-------------------------------------------------- Hashtable[] ss4 = q4.allSolutions(); System.out.println( "all solutions of " + t4); for ( int i=0 ; i<ss4.length ; i++ ) { System.out.println( "X = " + ss4[i].get("X")); } //-------------------------------------------------- System.out.println( "each solution of " + t4); while ( q4.hasMoreSolutions() ){ java.util.Hashtable s4 = q4.nextSolution(); System.out.println( "X = " + s4.get("X")); } //-------------------------------------------------- String t5 = "descendent_of(X,Y)"; Query q5 = new Query(t5); System.out.println( "each solution of " + t5 ); while ( q5.hasMoreSolutions() ){ java.util.Hashtable s5 = q5.nextSolution(); System.out.println( "X = " + s5.get("X") + ", Y = " + s5.get("Y")); } } }
source share