URLClassLoader und Class.forName

Status
Nicht offen für weitere Antworten.

thomas.g

Bekanntes Mitglied
Hallo Leute,

Ich versuche schon seit einiger Zeit für ein Programm dass Plugin-basierend ist einen Loader für .jar Dateien zu schreiben. Das Problem dabei ist, dass die Plugins zur Laufzeit in einen "Plugin-Ornder" kopiert werden können.

Dann habe ich den URLClassLoader verwendet um die jeweiligen Plugin-Klassen in der .jar Datei zu laden. Funktioniert zwar, allerdings muss ich an gewissen Stellen im Code mit Class.forName arbeiten. Da wirft er mir dann eine ClassNotFoundException.

Gibt es irgendwie eine Möglichkeit, den URLClassLoader global zu registrieren, damit Class.forName verwendet werden kann zum instanzieren von Klassen?

Danke und liebe Grüße,
Thomas
 

kasi

Mitglied
ich weiss es grade leider nicht, aber wenn du ne lösung gefunden hast, bitte teile sie mit, oder besser publizier deinen loader :)
Alternativ kannst du ja in den eclipse binaries schauen, muss da ja auch irgendwo stehen...
 

thomas.g

Bekanntes Mitglied
Ich habe das Problem auf andere Weise lösen können. Ich habe herausgefunden, dass ClassLoader in Java eine Art Baum-Struktur haben. Deswegen habe ich die URLClassLoader in der Reihenfolge wie sie benötigt werden (aufgrund meiner Pluginabhängikeiten) zusammengehängt. Der Code ist etwas komplexer weil ich andere Initialisierungssachen auch drinnen hab, aber grundsätzlich funktioniert das so:

Code:
// letzen URLClassLoader merken
private URLClassLoader last;
........

// als Datei übergibt man die .jar Datei
private void loadLibrary(File file) throws Exception {
// neuen ClassLoader erzeugen
last = URLClassLoader.newInstance(new URL[]{plugin.toURI().toURL()},last);
// MORE CODE HERE
}
.......

// statt der Methode Class.forName verwendet man die eigene
// mit Class.newInstance kriegt man dann ein Objekt
private Class getClass(String name) throws Exception {
// load and return the class
return Class.forName(class_name,true,last);
}

Das gute dabei ist, dass sich Java die ClassLoader, von der eine Klasse instanziert wurde, merkt. Deswegen brauche ich bei meinen Plugins z.B. nur die Hauptklasse aus der .jar Datei auf diese Weise laden, den Rest mache das Java intern.

Ich hoffe das hilft einigen.

Liebe Grüße,
Thomas
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
S URLClassLoader findet ResourceBundle nicht Allgemeine Java-Themen 0
T NoSuchMethodError: java.net.URLClassLoader.close Allgemeine Java-Themen 3
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
S URLClassLoader & asSubclass Allgemeine Java-Themen 3
N URLClassLoader Exception Allgemeine Java-Themen 5
R Probleme mit dem URLClassLoader Allgemeine Java-Themen 16
S URLClassLoader und Eclipse Plugin Allgemeine Java-Themen 4
A URLClassloader Frage Allgemeine Java-Themen 5
Fadi Lade Klass(jar), die lib im classpath hat mit URLClassLoader Allgemeine Java-Themen 2
D JAR im JAR und der URLClassloader Allgemeine Java-Themen 14
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
N URLClassLoader läd falsche Klasse Allgemeine Java-Themen 3
V URLClassLoader Problem Allgemeine Java-Themen 8
M URLClassLoader Allgemeine Java-Themen 3
M Probleme mit URLClassLoader in Verbindung mit rmi Allgemeine Java-Themen 6
J Probleme mit dem URLClassLoader Allgemeine Java-Themen 2
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben