Re: problem mit doppelter Definition einer Klasse



Ralf Ullrich schrieb:
So, noch ein wenig mehr.

also erstmal nachvollziehen... Ich habe deinen Code ein wenig geändert, weil ich lieber sehen möchte wer die Klasse geladen hat, statt den hascode the Klass zu sehen. Demnach sind L2+L3 Kinder von L1 und bilden einen Baum.

bis vor dem Teil mit der Resolution kann ich folgendes feststellen:

L1 hat Actor geladen
L2 hat Derived geladen und kennt Actor von L1
L3 hat ein anderes Derived geladen und kennt Actor von L1

Value ist bisher nicht geladem. Wenn die Resolution startet, dann wird Value von L2 geladen. L2 hat jetzt Derived und Value...

was mich stutzig macht ist das Actor, welches ja in L1 ist doch eigentlich auch Value kennen müsste, das aber nicht kann, da L1 Value garnicht kennt. Das müsste doch eigentlich schon einen Fehler produzieren. Und tatsächlich, das produziert schon einen Fehler... und der ist mir auch klar

aber vergessen wir das mal für einen kurzen Moment... in deinem Programm schlägt ja die Resulotion durch L3 fehl.. was ich aber jetzt nicht ganz verstehe.... L3 hat doch ein eigenes Derived, ich würde jetzt erwarten dass es sich gleich wie L2 verhält und seine eigene Version von Value lädt... tut es aber nicht, es gibt einen Fehler. Und den Fehler verstehe ich nicht.

was ich dem ganzen entnehme ist, dass wenn ich Actor lade, sollte ich Value über den gleichen Loader laden und auch wenn ich derived von einem anderen Loader lade, dass ich Value trotzdem vom gleichen Loader wie Actor laden muss. Dass würde für mich bedeuten ich habe eine Bibliohek, die Klassen aus dem Systemloader dupliziert und diese Klassen werden jetzt mal über den Systemloader und mal über meinen Loader geladen... was den Fehler ergibt. Also entweder ist in der Bibliothek ziemlicher Mist, oder die Klassen werden geladen noch bevor diese Bibliothek zur Verfügung steht. Weil, wenn alle notwendigen Klassen dupliziert werden, sollte es ja kein Problem geben, dann gibt es ja nur einen Loader der die Klassen lädt. Ich habe jaxen in verdacht.. Ich weiss das der Fehler nicht auftritt wenn diese Bibliothek nicht vorhanden ist, aber mir war bisher nicht klar warum. Auch habe ich festgestellt, das jaxen wohl Klassen aus Java dupliziert.

[andere Varianten]
reproduzieren konnte. Wie ich zu

2) Resolving the types in an interface method
3) Resolving the types in an overriding method

eventuell über getSuperClass().getMethod usw.

aber danke für deine Arbeit... eventuell hast du mich auf eine Spur gebracht. Wenn du mir das mit dem L3 noch erklären kannst dann wäre ich echt zufrieden ;) Das Problem ist dann noch nicht gelöst, aber das Wesen des Problems ist besser verstanden ;)

Also Jochen es sieht wohl so aus, dass mein Test-Code aus dem vorigen Post, die einzige Situation nachstellt, in der der von dir beobachtete Fehler auftauchen kann. Nur dumm, dass es selbst von dieser Situation noch tausende Varianten gibt, von denen eine bei dir auftritt. BTW, schonmal probiert in diesem Method-Override-Fall die Überschreibung dadurch aufzuheben, dass du m entweder in Actor oder in Derived umbenennst?

Das Problem ist... die fehlerauslösende Klasse ist nicht von mir. Ich kann an dem Loader schrauben, aber nicht an der Bibliothek... nicht wirklich jedenfalls.


Gruss theo


--
Jochen "blackdrag" Theodorou
The Groovy Project Tech Lead (http://groovy.codehaus.org)
http://blackdragsview.blogspot.com/
http://www.g2one.com/
.



Relevant Pages

  • Re: problem mit doppelter Definition einer Klasse
    ... Meine vorige Reproduktion des Fehlers betraf wie im Code angedeutet Loading Constraints nach VM Spec 5.4.2, ... Danach kann man die drei Test-Klassen Value, Actor und Derived für die weiteren Situationen anpassen. ... // symbolic method reference, ...
    (de.comp.lang.java)
  • Re: Fehlermeldung IE6
    ... Ich mußte den Problembericht an Microsoft senden,worauf eben die ... Nachricht kam, daß es sich um KEEN VALUE handelt, was immer das auch ... sein mag,Mit meinem mangelhaften Englisch,glaube ich aber herausgefunden ... um was es geht (wann tritt der Fehler wo bei welcher ...
    (microsoft.public.de.german.inetexplorer.ie6.outlookexpress)
  • Re: Daten von einer Form in ne andere übergeben
    ... Form möchte ich by Ref die ... Instanz meiner aktuellen Form übergeben, ... brigt der Compiler einen Fehler: ... private Einstellungen (Trainer Value) ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: WHERE value < 7 -- und trotzdem Bedingung erfüllt?
    ... > Mathe-Kenntnisse nicht mehr ausreichen? ... Ich würde es als Fehler ansehen;-) ... Welche Feldtypen verwendest Du bei Value? ...
    (microsoft.public.de.sqlserver)
  • Re: xml-Daten in ComboBoxen und Listbox laden
    ... Jetzt - nachdem ich die xml Datei ausgewählt habe - bringt er mir ... einen Fehler: ... Value '' is already ... DataRowAction action) ...
    (microsoft.public.de.german.entwickler.dotnet.vb)