Datei aus dem Plugin-Verzeichnis lesen

gello

Mitglied
Hallo,

ich hab hier ein Problem, das mir noch sämtliche Nerven raubt.
Ich hab ein Plugin A in Eclipse 3.1 erstellt. Darin befindet sich ein Ordner pl mit einer xyz.pl Datei. Ebenfalls in Plugin A ist meine Klasse EngineHandler. In dieser Klasse rufe ich einen Prologinterpreter mit der Datei xyz.pl auf. Dazu erstelle ich eine neue Query mit
Code:
new Query(consult('pl/xyz.pl'),gen_Model)

Leider bringt mir nun immer der Prologinterpreter die Fehlermeldung, dass er pl/xyz.pl nicht finden kann.

Was mach ich da falsch? Wie muss ich den Pfad übergeben, damit der Interpreter die Datei findet?

Bin für jeden Hinweis dankbar.
 
Vielleicht hilft dir das was ich gerade zu meinen alten KI Übungen finde.

Wichtig ist vor allem erstmal alle benötigten Libraries zu laden. Dort habe ich auch schon die Prolog Datei auf der ich arbeiten möchte JIP mitgeteilt:
Java:
private static final String USER_DIR = System.getProperty("user.dir");
private static final String FILE_SEP = File.separator;
private static final JIPEngine jip = new JIPEngine( );
private static final String PROLOG_MAIN_FILE = USER_DIR + FILE_SEP
			+ "Prolog" + FILE_SEP + "a4.pl";

private void initProlog() {
	if(!needInit){
		return;
	}
	logClass.debug("Initializing Prolog");
	try {
		// Libaries liegen in lib/jiprolog und Enden mit jar
		File dir = new File(USER_DIR + FILE_SEP + "lib" + FILE_SEP
				+ "jiprolog");
		logClass.debug("Loading JIProlog Libraries from: "
				+ dir.getAbsolutePath( ));
		File[] files = dir.listFiles(new FilenameFilter( ) {

			public boolean accept(File dir, String name) {
				return name.endsWith(".jar");
			}

		});
		if (files.length == 0) {
			logClass
					.warn("No JIProlog Libraries found. Program may not work correctly. Please place the Libraries in "
							+ dir.getAbsolutePath( ));
		}
		// alle gefundenen Libs laden
		for (File file : files) {
			jip.loadLibrary(file.getAbsolutePath( ));
		}
		logClass.debug("Finished Loading JIProlog Libraries.");
		logClass.debug("Consulting Main Prolog File: " + PROLOG_MAIN_FILE);
		jip.consultFile(PROLOG_MAIN_FILE);
	}
	catch (JIPSyntaxErrorException e) {
		logClass.error(e);
	}
	catch (IOException e) {
		logClass.error(e);
	}
	needInit = false;
}

Ausführen eines Queries ging dann so:
Java:
JIPQuery query = jip.openSynchronousQuery("robotCheckNoTrap(P)");
JIPTerm term = query.nextSolution( );
if (term != null) {
	logClass.debug("Prolog returned Path");
	Hashtable table = term.getVariablesTable( );
	if (!table.isEmpty( )) {
		// Pfad holen und dann Parsen
		JIPVariable variable = (JIPVariable) table.get("P");
		String strg = variable.getValue( ).toString( );
	}
}
else {
	logClass.debug("No Solution found");
}
query.close( );

Hoffe das hilft ein wenig... an mehr kann ich mich gerade auch nicht erinnern...
 
Hallo,

@zeja: Danke für deine Hilfe, aber an den Libraries lags nicht. Hatte ein Problem mit den Pfadangaben.

@tom: Zuerst mal Danke für deine Hilfe. Mein Problem bestand darin, dass ich zwar den Pfad mit
Code:
BundleUtility.find()
ausgelesen habe, aber diese URL dann dem Prologinterpreter gefüttert habe und mir nicht noch mit
Code:
Platform.resolve(url)
den absoluten Pfad geholt habe.

Tja, so einfach kanns sein und ich hab mich gestern den ganzen Tag damit geärgert :mad:

Nochmals Danke für eure große Unterstützung
 
Zurück