URLClassLoader stößt static Block nicht an

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo allerseits,

ich sitze seit einiger Zeit an einer Schnittstelle für Plugins. Habe schon diverse vorschläge aus dem Forum angesehen. Leider führte das nicht immer zum gewünschten Erfolg.

Nun habe ich versucht eine Schnittstelle aller JDBC zu programmieren. Ich habe eine Klasse ähnlich dem DriverManager implementiert. Sie besitzt eine statische Methode registerPlugin(Pluggable plugin). Pluggable ist das Interface welches mir die Infos zu meinem Plugin bieten soll.

Plugins sollen später als .jar-Dateien in einem Pluginordner liegen. Um die Klassen dann zur Laufzeit in mein Programm zu laden hatte ich vor einen URLClassLoader zu benutzen. Beim Laden der Klasse, soll ein statischer Block aufgerufen werden.

Dies sieht etwa so aus:
Code:
static
{
    PluginManager.registerPlugin(new Testplugin());
}
Leider wird beim Laden der Klasse aus der JAR dieser Block nicht ausgeführt. Binde ich das Plugin in mein Projekt ein und lade das ganze mit Class.forName("Testplugin"); so geht alles wunderbar.

Hat jemand ne Ahnung wieso der URLClassLoader meinen Block nicht anfasst?

Danke für jede Hilfe

Gruß
 

Wildcard

Top Contributor
Der ClassLoader führt keine static Blocks aus, das macht die VM und das macht sie garantiert. Ich denke eher, dass weder PluginManager, noch TestPlugin bekannt sind.
 
G

Gast

Gast
Ein System.out.println("hallo") wird nicht ausgeführt, was mir zumindest beweist, dass dieser Block nicht ausgeführt wurde.
 
M

maki

Gast
Gast hat gesagt.:
Ein System.out.println("hallo") wird nicht ausgeführt, was mir zumindest beweist, dass dieser Block nicht ausgeführt wurde.
Das muss wohl an dir liegen ;)
Irgendwo ist da der Wurm drin.
 
G

Guest

Gast
Ach und zum ClassLoader allgemein ein Auszug aus der JavaInsel:

Eine Art Konstruktor für das Klassenobjekt selbst (nicht die Exemplare der Klasse) ist ein static-Block, der ein oder mehrmals in eine Klasse gesetzt werden kann. Jeder Block wird genau dann ausgeführt, wenn die Klasse vom Klassenlader in die virtuelle Maschine geladen wird.
 
G

Gast

Gast
In der Zeile:
Jeder Block wird genau dann ausgeführt, wenn die Klasse vom Klassenlader in die virtuelle Maschine geladen wird.

Ich hab es extra dick gemacht. Außerdem ist es beim JDBC genauso. Erst wenn du Class.forName() und damit den ClassLoader aufrufst wird der Block ausgeführt.
 

Wildcard

Top Contributor
Hab ich doch gesagt, der static Block wird ausgeführt wenn die Klasse geladen wird. Trotzdem liegt diese Verantwortung nicht bei Custom ClassLoader XY.
 
G

Gast

Gast
Ok ich hab nun für mich eine funktionierende Lösung gefunden.

Das ganze funktioniert nicht wenn man den URLClassLoader selber mit loadClass direkt arbeiten lässt.

Geht man den Umweg über Class.forName(String, boolean, ClassLoader) so wird diese wahrscheinlich auch aufgerufen, aber das ganze wird gleichzeitig initialisiert wenn man true als 2. Parameter übergibt.

Wildcard: Ich denke man kann über sowas philosophieren. Wahrscheinlich hast du Recht, dass es nicht die Verantwortung des ClassLoaders ist, aber er hängt da mittendrin. Er sorgt ja quasi dafür das die Klasse in die VM geladen wird.

Fakt ist: Lösung gefunden!
Danke euch trotzdem
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S URLClassLoader findet ResourceBundle nicht Allgemeine Java-Themen 0
T NoSuchMethodError: java.net.URLClassLoader.close Allgemeine Java-Themen 3
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
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
N URLClassLoader läd falsche Klasse Allgemeine Java-Themen 3
V URLClassLoader Problem Allgemeine Java-Themen 8
T URLClassLoader und Class.forName Allgemeine Java-Themen 2
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
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S static methoden Allgemeine Java-Themen 9
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
G static- Methoden überschreiben Allgemeine Java-Themen 10
E Geschwindigkeit static Allgemeine Java-Themen 6
V Static oder wie? Allgemeine Java-Themen 61
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
G Java-Befehle Native und Static Allgemeine Java-Themen 2
conan2 static-Block in Klassen Allgemeine Java-Themen 6
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
S singleton vs. static Allgemeine Java-Themen 7
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
P Singleton vs static Allgemeine Java-Themen 19
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4
J Problem mit static/non-static Allgemeine Java-Themen 2
G getAppletContext() in static Methode Allgemeine Java-Themen 3
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
G static vor einem array Allgemeine Java-Themen 2
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
A JSP & static-Variablen Allgemeine Java-Themen 3
B Static Import: Syntaxfrage Allgemeine Java-Themen 2
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
N this im public static void Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben