Home Forum Nuclos Entwicklung Plugins Client-Extensions können nicht mehr geladen werden

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)
  • Autor
    Beiträge
  • #8962
    Michael Hönnig
    Teilnehmer

    Hallo,

    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
    … Michael

    Nachtrag: die Klasse ist allerdings seit 2014 nicht verändert worden, wie ich gerade in bitbucket nachgesehen habe

    #8964
    Ramin Goettlich
    Teilnehmer

    Das 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?

    #8969
    Michael Hönnig
    Teilnehmer

    Ich 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.

    #8973
    Thomas Hempel
    Teilnehmer

    Wo 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..

    #8978
    Michael Hönnig
    Teilnehmer

    So, 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
    … Michael

    Attachments:
    #8979
    Michael Hönnig
    Teilnehmer

    Mit 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

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)