Klasse aus Jar Datei benutzen

Dukeatcoding

Mitglied
Ich hab eine Klasse und ein Interface in einer jar Datei.

Nun habe ich ein "Hauptprogramm" aus dem ich direkt eine Insatnz dieser Klasse aus der Jar Datei , einbinden und benutzten möchte. Wie bekomme ich das am einfachsten hin ?
 
Hallo,

Wenn du mit eclipse oder NetBeans arbeitest, musst du das Jar, in den Classpath einbinden.

Wenn du mit javac in der Eingabeaufforderung kompilierst, musst das Jar-Archive sich im gleichen Verzeichnis befinden.

MFG

zEriX
 
Es geht nicht darum sie "dauerhaft" einzubinden.

Vielmehr muss ich später anhand von eingaben dynamisch bestimmte Jar Files bzw. die Klassen daraus benutzen.
 
Es ist im Prinzip ein Makesystem

Über eine XML Datei wird gesagt, was irgendwo runtergeladen werden soll(svn) und mit was für einem Filter(Compiler) kompeliert werden soll.

Hier mal das Interface eines Filters
PHP:
package v1;
/* Interface Builder Filter
 * 
 * Dient zur vereinheitlichung von Filtern, die später als Jar vorliegen sollen
 */
public interface BuildFilter {
	// Zum Ausführen des Filters, wird ein Array mit den Einzelnen Parameter Strings übergeben
	// Die Reihen Folge der Elemente bestimmt um welchen Parameter es sich handelt
	public boolean run(String arguments[]);
	
	// toString, liefert eine Textuelle Rückgabe der Ausführung zurück, so z.B. ein Konsolenlog
	public String toString();
	
}

Ich schreibe einen Filter für den "normalen" Java Compiler und den Eclipse Compiler aber die Leute können beliebige Filter benutzten, die dann in jar dateien vorliegen.

Anhand der XML Datei
PHP:
XML Standart 1.0

<Build>
 // Der Set Bereich ermöglich das setzten von Systemvariablen
 <set>
 	// Angabe zum System, entscheident für Dateipfade
 	<system>(Default: win, Zulässige Werte: win, linux)</system>
 	// Ein Ordner in dem allen Dateien whärend der Bearbeitung gelagert werden
 	<workingdir>(Default: C:\workspace\)</workingdir> 	
 	// Ordner in dem die Ergebnisse der Application liegen
 	<outputdir>(Default: C:\workspace\)</outputdir> 
 </set>
 
 // Der SVN Bereich ist optitional und ermöglich bei Mehrfach verwendung eines Repositories, dieses nur einmal
 // komplett zu definieren und es anschließend über die ID zu benutzen
 <svn>
    // SVN Repository
 	<id></id>
 	<url></url>
 	<user></user>
 	<pw></pw>
 </svn>
 
 // ID Für Identifikator, Ein Verweis auf eine Datei oder einen Ordner 
 <file> 
  // Eindeutigername zur Wiederverwendungen
  <name>java</name>
  // Pfad, entweder im Lokalen Dateisystem oder Pfad vom / des SVN Pfads
  <location></location>
  // SVN Optionen
   #### branch ? bei subversion überhaupt noch existent ? ####
   <revision>(Default: Aktuellste Version)</revision>
  // Handelt es sich um eine Datei aus SVN
  // entweder Tag <svnsource> Das die ID von einem Zuvor oben definierten Repository enthält oder
  <svnsource>ID</svnsource>
  // neue Definition von SVN
   <svn>
    // SVN Repository
 	<id></id>
 	<url></url>
 	<user></user>
 	<pw></pw>
	</svn>  
 </file>
 
 // Definition von Ouput oder wie es laut Spezifikation hies application
 <ouput>
   
   <name>outputa</name>
   ############# SCHWIERIG HIER REFERENZ AUF FILE oder Irgendeine einzelne Definition von Filtern #######
   <usefilter>java</usefilter>
   // Je Nach Filter können unterschiedliche Parameter übergeben werden ?
   // Zu Überlegen ist ob man hier auch vereinheitlichen kann, aber schwierig
   <argument>
   		<name></name>
   		<value></value>
   </argument>
 </output> 
 
</Build>

Wir dann festgelegt, welche Filter (Compiler) benutzt und somit welche Jar eingebunden werden soll.

Soweit die Theorie nur das mit den jar dateien scheint ja nicht unebdingt einfach zu sein.
 
Du kannst die Jar-Datei mit einem URLClassLoader laden und Klassen daraus mittels Reflection aufrufen. Dazu kannst du dem Class.forName aufruf den ClassLoader übergeben damit dieser weis dass die Klassen innerhalb des Jars zu finden sind.
 
Ok, dann werde ich mir mal bei der JavaInsel erstmal den Abschnitt über den ClassLoader durchlesen.

Danke für den Hinweiss. Werde mich dann wohl nochmal melden.
 
Zurück