Home › Forum › Nuclos Entwicklung › Plugins › Client-Extensions können nicht mehr geladen werden
- Dieses Thema hat 5 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahre, 5 Monaten von
Michael Hönnig.
-
AutorBeiträge
-
8 Oktober 2016 um 16:12 Uhr #8962
Michael Hönnig
TeilnehmerHallo,
spätestens seit der 4.10.3 (evtl. aber auch schon früher) können Client-Extensions nicht mehr geladen werden: ClassNotFoundException.
Die Klasse, die das hervorruft sieht auch etwas seltsam aus, org.nuclos.common2.LangUtils.UtilsClassLoader:
public static class UtilsClassLoader extends ClassLoader {
public UtilsClassLoader(ClassLoader parent) {
super(parent);
}@Override
protected Class> findClass(String name) throws ClassNotFoundException {
if („[B“.equals(name)) {
return byte[].class;
}
return super.findClass(name);
}}
Nun ist aber java.lang.Classloader.findClass() so implementiert:
protected Class> findClass(String name) throws ClassNotFoundException {
throw new ClassNotFoundException(name);
}Genau das passiert dann auch. Der eigene ClassLoader hätte am delegation Model teilnehmen müssen (parent-Loader). Evtl. ist es auch einfach die falsche Basisklasse.
Kann das jemand bestätigen oder bin ich hier auf dem Holzweg?
Grüße
… MichaelNachtrag: die Klasse ist allerdings seit 2014 nicht verändert worden, wie ich gerade in bitbucket nachgesehen habe
10 Oktober 2016 um 20:18 Uhr #8964Ramin Goettlich
TeilnehmerDas können wir so nicht nachvollziehen, Extensions funktionieren einwandfrei.
Nun kennen wir Ihre Extension nicht, vielleicht nutzen Sie Klassen oder Methoden aus dem Kern, die sich in 4.10.3 geändert haben?
11 Oktober 2016 um 12:32 Uhr #8969Michael Hönnig
TeilnehmerIch hatte die Extension neu gegen die jars von Nuclos 4.10.3 kompiliert, nicht mehr vorhandene Klassen wären da also aufgefallen.
Interessant ist aber dennoch, dass der zuvor genannte UtilsClassLoader in Nuclos definitiv nicht funktionieren kann, da es den aber schon seit Jahren gibt, wurde er vermutlich aber vor 4.10.3 einfach nicht verwendet. Ich werde mal versuchen, das anhand des Sourcecode-Repositories herauszufinden.
Eine weitere Möglichkeit wäre, dass diese ClassNotFoundException gar nicht relevant ist (wenn auch unschön), da vielleicht später dann doch noch mit dem richtigen ClassLoader geladen wird. Der Effekt, dass das Hauptfenster leer bleibt, der Client „hängt“ und nach ca. 2min eine andere, sehr allgemein gehaltene Exception (*) in dem üblichen Fehlermeldungsfenster kommt, hätte dann eine ganz anderen Grund.
(*) irgendwas mit Spring Bean main could not be initailized – den genauere Meldung liefere ich später nach, sobald ich wieder im eigenen Büro bin. Definitiv kommt mit 4.10.2 die ClassNotfoundException aber gar nicht.
11 Oktober 2016 um 22:31 Uhr #8973Thomas Hempel
TeilnehmerWo können wir ein Beispiel für eine funktionierende Extension bekommen, die Zugriff auf den Client- und Server-Kontext hat? Das würde uns viel Mühe sparen.
Leider fehlt dazu eine Doku..
13 Oktober 2016 um 00:01 Uhr #8978Michael Hönnig
TeilnehmerSo, hier nun die Exception, die ca. 2min nach der zuvir genannten ClassNotFoundException kommt (währenddessen Nuclos blockiert ist und das Hauptfenster von Nuclos weiß ist) – siehe Anhang.
Vermutlich nicht sehr aussagekräftig, aber der Vollständigkeit halber.
Das Hauptfenster wird außerdem in dem Moment, in dem das Popup-Fenster mit der CommonFatalException kommt, komplett und soweit ich sehe auch korrekt dargestellt. Ist natürlich wegen der Fehlermeldung nicht bedienbar.
Aber ich bleibe dabei: der o.g. Nuclos UtilsClassLoader kann nicht funktionieren.
Grüße
… MichaelAttachments:13 Oktober 2016 um 23:03 Uhr #8979Michael Hönnig
TeilnehmerMit dem Standalone Client funktioniert zumindest das Starten auch mit Nuclos 4.10.3. Konkretes Problem ist damit erst einmal behoben. Diesen UtilClassLoader sollte sich dennoch mal einer der Nuclos Entwickler ansehen.
Alles Gute wünscht
… Michael -
AutorBeiträge