Hallo zusammen...
ich bräuchte mal Unterstützung, da ich schon seit Stunden nicht weiter komme.
Ich bin nicht sonderlich geübt im Umgang mit Java, da ich jobtechnisch im embedded (C/C++/ASM) Bereich angesiedelt bin.
Ich muss für meine Abschlussarbeit ein Thema einer Diplomarbeit von 2005 wieder aufgreifen und der Prof wünscht, dass es in Java geschieht. Der Diplomand hat damals einen Algorithmus für levelplanare Graphen entwickelt und ein Programm geschrieben, dass zu einem gegebenen Graphen (Textdatei) ermittelt, ob der Graph planar dargestellt werden kann.
Ich habe das Programm nun in NetBeans portiert und es läuft. Als SAT-Solver wurde damals ein Linux-Programm verwendet. Da mein Programm aber plattformunabhängig sein soll, habe ich mir eine Java-Implementierung eines SAT-Solvers herausgesucht (SAT4J).
Es gibt nur wenig Dokumentation hierzu und ich glaube, ich scheitere momentan an etwas grundlegendem, kann es aber nicht identifizieren.
Der Reihe nach:
Es gibt einen Getting-Started-Guide (download.forge.objectweb.org/sat4j/getting-started-sat4j-0.3.pdf), ausserdem habe ich die neuste Core-Version herunter geladen (2.3.0)
Um SAT4J zu testen, habe ich, nachdem mein Programm den Graphen analysiert und die Input.cnf-Datei erstellt hat, die Anweisung auf Seite 4 des Guides befolgt.
Sprich: In der Kommandozeile "java -jar org.sat4j.core.jar Input.cnf > Output.txt" eingegeben. Der SAT-Solver hat die Klauseln korrekt überprüft und das Ergebnis stimmt.
Jetzt möchte ich die SAT4J-Library gern in mein Programm einbetten, so dass ich zwischendurch nicht in die Kommandozeile muss. Dazu habe ich diese importiert.
Auf Seite 7 des Guides steht, wie man SAT4J als Library benutzt. Mein Problem ist nun, dass ich keine Klassen aufrufen kann, bzw die meisten Funktionen aus der Library abstract sind.
Es hapert also quasi schon an der ersten Zeile ...
Mein Code:
NetBeans sagt dazu: cannot find Symbol
Wenn ich mir die Datei SolverFactory.java ansehe steht dort folgendes:
Und das steht in fast allen Dateien.
Kann mir jemand aufzeigen, was ich hier falsch mache?
Ich weiss nicht, ob ich hier wertvolle Informationen vergesse oder so. Wenn ja, dann bitte kurz nachhaken, dann kann ich weitere Auskünfte geben.
Vielen Dank und beste Grüße,
Thomas
ich bräuchte mal Unterstützung, da ich schon seit Stunden nicht weiter komme.
Ich bin nicht sonderlich geübt im Umgang mit Java, da ich jobtechnisch im embedded (C/C++/ASM) Bereich angesiedelt bin.
Ich muss für meine Abschlussarbeit ein Thema einer Diplomarbeit von 2005 wieder aufgreifen und der Prof wünscht, dass es in Java geschieht. Der Diplomand hat damals einen Algorithmus für levelplanare Graphen entwickelt und ein Programm geschrieben, dass zu einem gegebenen Graphen (Textdatei) ermittelt, ob der Graph planar dargestellt werden kann.
Ich habe das Programm nun in NetBeans portiert und es läuft. Als SAT-Solver wurde damals ein Linux-Programm verwendet. Da mein Programm aber plattformunabhängig sein soll, habe ich mir eine Java-Implementierung eines SAT-Solvers herausgesucht (SAT4J).
Es gibt nur wenig Dokumentation hierzu und ich glaube, ich scheitere momentan an etwas grundlegendem, kann es aber nicht identifizieren.
Der Reihe nach:
Es gibt einen Getting-Started-Guide (download.forge.objectweb.org/sat4j/getting-started-sat4j-0.3.pdf), ausserdem habe ich die neuste Core-Version herunter geladen (2.3.0)
Um SAT4J zu testen, habe ich, nachdem mein Programm den Graphen analysiert und die Input.cnf-Datei erstellt hat, die Anweisung auf Seite 4 des Guides befolgt.
Sprich: In der Kommandozeile "java -jar org.sat4j.core.jar Input.cnf > Output.txt" eingegeben. Der SAT-Solver hat die Klauseln korrekt überprüft und das Ergebnis stimmt.
Jetzt möchte ich die SAT4J-Library gern in mein Programm einbetten, so dass ich zwischendurch nicht in die Kommandozeile muss. Dazu habe ich diese importiert.
Auf Seite 7 des Guides steht, wie man SAT4J als Library benutzt. Mein Problem ist nun, dass ich keine Klassen aufrufen kann, bzw die meisten Funktionen aus der Library abstract sind.
Es hapert also quasi schon an der ersten Zeile ...
Mein Code:
Java:
import org.sat4j.specs.*;
import org.sat4j.minisat.SolverFactory;
public class SSolver
{
ISolver solver = new SolverFactory.newDefault();
NetBeans sagt dazu: cannot find Symbol
Wenn ich mir die Datei SolverFactory.java ansehe steht dort folgendes:
Java:
public static ISolver newDefault() {
//compiled code
throw new RuntimeException("Compiled Code");
}
Und das steht in fast allen Dateien.
Kann mir jemand aufzeigen, was ich hier falsch mache?
Ich weiss nicht, ob ich hier wertvolle Informationen vergesse oder so. Wenn ja, dann bitte kurz nachhaken, dann kann ich weitere Auskünfte geben.
Vielen Dank und beste Grüße,
Thomas