Hallo!
Ich bin gerade dabei ein kleines Spiel zu schreiben mit einer Protablen KI (Andere Leute sollen mir eine KI geben können, die ein bestimmtes Interface implementiert, und dann soll sie dynamisch geladen werden können abhand des Klassennamen).
Das ganze klappt in Eclipse auch ganz gut, wenn ich den Paketpfad angebe. Aber sobald ich eine Jar daraus mache und versuche auf Klassen, die in einem Ordner liegen der auf einer Ebene mit der Jar ist, zuzugreifen bekomme ich ne ClassNotFound, oder je nach String Variation auch ne Nullpointer.
Also die Strucktur sieht so aus:
TestOrdner/testJar.jar
TestOrdner/AIs
TestOrdner/AIs/ai.class
Hier der JavaCode
Das ganze ist nebenbei bemerkt auch nur eine schnell geschriebene Testklasse
Hier noch mein Mainifest mit dem ich es versucht hab (auch mit der Leerzeile am Ende):
Manifest-Version: 1.0
Main-Class: de.fhhannover.inform.blokus7.application.TestStrategyLoader
Class-Path: TestLoader.jar AIs/
So, ich hoffe ihr findet das Problem an dem ich jetzt schon einige Stunden vergebens sitze.
Danke schonmal!
Olli
Ich bin gerade dabei ein kleines Spiel zu schreiben mit einer Protablen KI (Andere Leute sollen mir eine KI geben können, die ein bestimmtes Interface implementiert, und dann soll sie dynamisch geladen werden können abhand des Klassennamen).
Das ganze klappt in Eclipse auch ganz gut, wenn ich den Paketpfad angebe. Aber sobald ich eine Jar daraus mache und versuche auf Klassen, die in einem Ordner liegen der auf einer Ebene mit der Jar ist, zuzugreifen bekomme ich ne ClassNotFound, oder je nach String Variation auch ne Nullpointer.
Also die Strucktur sieht so aus:
TestOrdner/testJar.jar
TestOrdner/AIs
TestOrdner/AIs/ai.class
Hier der JavaCode
Java:
package de.bla.application;
import java.lang.reflect.Constructor;
import java.security.KeyStore.LoadStoreParameter;
import de.bla.basics.BStrategy;
public class TestStrategyLoader{
public static BStrategy loadStrategyFromFile(String path){
BStrategy strategy = null;
try{
Class formClass = Class.forName(path);
Constructor con = formClass.getConstructor();
strategy = (BStrategy) con.newInstance(null);
}
catch(Exception e){}
return strategy;
}
public static void main(String[] args) {
String name = "AIs.ai";
BStrategy test = loadStrategyFromFile(name);
System.out.println("Erfolg! : "+test.getGroupName());
}
}
Das ganze ist nebenbei bemerkt auch nur eine schnell geschriebene Testklasse
Hier noch mein Mainifest mit dem ich es versucht hab (auch mit der Leerzeile am Ende):
Manifest-Version: 1.0
Main-Class: de.fhhannover.inform.blokus7.application.TestStrategyLoader
Class-Path: TestLoader.jar AIs/
So, ich hoffe ihr findet das Problem an dem ich jetzt schon einige Stunden vergebens sitze.
Danke schonmal!
Olli