Aus Jar eine Class laden und damit arbeiten!

antonbracke

Mitglied
Hallo,

ich versuche so eine Art Programm zubauen, bei dem man auf ganz einfache Weise so etwas wie Addons hinzufügen kann indem man sie einfach in einen Ordner kopiert und dann eine Methode diesen Ordner nach den Jars durchsucht und dann die gefundenen Jars samt Klassen lädt. Jede Jar soll eine Hauptklasse haben, in der es dann eine Methode gibt die ein JPanel zurückliefert.
(Vllt. kennt jemand das von Bukkit bei den Plugins - genauso will ich das auch machen)
Ich habe HIER auch schon etwas gefunden, was vllt. gehen könnte, doch damit kann ich nichts anfangen, da ich den Source nicht ganz verstehe! Könnte mir jemand mal ein kleines Beispiel schreiben oder einen guten Link geben. Das wäre echt nett, da ich das ganze mit diesen Loader und so noch nie gemacht habe und auch nicht ganz verstehe! 🙂

Ich hoffe, ich habe mein Problem genau genug erklärt!

Gruß Anton
 
Java:
	private Plugin newInstance(String path, String classname) throws Exception 
	{
		URL url = new File(path).toURL();
		URLClassLoader cl = new URLClassLoader(new URL[] { url });
		Class<? extends Plugin> c = (Class<? extends Plugin>) cl.loadClass(classname);
		return c.newInstance();
	}

ist doch bereits ein gutes Beispiel.
Ich versuchs mal zu erklären.

#3: Der Pfad wird zum URL-Object umgewandelt
#4: Es wird ein neues ClassLoader-Object erstellt (Eine Klasse, welches wie der Name sagt "Classes loaded")
#5: der ClassLoader soll die Klasse "classname" (der übergeben wird) suchen und zurückgeben.
#6: eine neue Instanz der Klasse wird erstellt und returned.
 
Ich verstehe aber immer nocht nicht, was die Klasse Plugin denn damit zu tun hat!
Was soll ich mit Plugin machen?
Und wie kann ich jetzt das von mir gennante JPanel als return Wert von der Klasse aus der JAR bekommen?
Kann mir da jmd vllt ein Source schicken!

Gruß Anton
 

Zurück
Oben