Klassen ClassCastException bei gleichnamigem: paket.klasse cannot be cast to paket.klasse

== != equals

Aktives Mitglied
Ich muss in einem einzelnen Fall auf die Klasse eines anderen packages zugreifen. Hierfür importiere ich sie und caste sie dann.
Leider erhalte ich erst zur Laufzeit den Fehler: paket.klasse cannot be cast to paket.klasse
Huch?

Sobald ich den Cast entferne und auf Object speicher, ist die Variable vom Typ paket.klasse und nicht Object.
Gibt es einen Unterschied zwischen der importierten und erhaltenen Klasse? Wie kann ich das feststellen?

Danke im Voraus für jeden Hinweis.
 
Okay, was kann man dann tun?
zB. denselben Classloader verwenden.

Gibt es eine schnell&schmutzig-Lösung um die Exception zu vermeiden? Wie z.B. prüfe ob es die Methode bei dem Objekt/der Klasse des Objekts gibt, wenn ja aufrufen.
Das ist wohl eher die Ursache des Problems anstatt dessen Lösung.

Solltest genauer beschreiben in welchem Kontext dieses Problem auftritt (Code & mehr Erklärungen).
Sowas apssiert wenn sich Leute zB. mal Q&D ihr eigenes Pluginsystem zusammenfrickeln.
 
Nun, ich habe zwei Spiele, poker und bino. Für die habe ich jeweils ein Java-Projekt angelegt, weil sie völlig unabhängig voneinander arbeiten. Nur in einem einzelnen Fall möchte ich von poker auf bingo zugreifen, nämlich wenn ein Pokerspieler auch beim Bingo angemeldet ist, bekommt er beim Pokerspielen Bingopunkte. Deshalb möchte ich sein Userobjekt aus bingo erhalten um dann die Punkte gutzuschreiben. Diese Gutschrift soll in poker.benutzer stattfinden.
Habe ich das verständlich geschildert? :reflect:
 

Anhänge

  • classcastproblem1.jpg
    classcastproblem1.jpg
    13,3 KB · Aufrufe: 40
Das bewirkt leider keine Änderung.
Wobei ich die Klassen aber auch immer aus dem Ordner in ein anderes Verzeichnis kopiere, von dem sie aus von SmartFoxServer (eine Java-Socket-Serveranwendung) eingebunden werden. Deshalb tu ich mich etwas schwer, ein KSKB zu erstellen.
 
Dein Problem ist, dass dies auch wirklich zwei verschiedene Klassen sind.

Da ich annehme,dass du zweimal das Javafile erstellt hast und dann den Code vom einen Projekt einfach in das andere kopiert hast und zweimal kompiliert.
 
Dein Problem ist, dass dies auch wirklich zwei verschiedene Klassen sind.

Da ich annehme,dass du zweimal das Javafile erstellt hast und dann den Code vom einen Projekt einfach in das andere kopiert hast und zweimal kompiliert.

maki hat Recht, mit den Classloadern. Dabei ist irrelevant, ob die Klasse in den Klassenpfaden der Classloader aus einer oder aus zwei physikalischen Quellen stammen.

Ich nehme an, es ist die Laufzeitumgebung und wie dort die beiden Applikationen deployt sind. Es gäbe keine Probleme, wenn die Schnittstelle der beiden Applikationen eine Remoteschnittstelle (mit Marshalling/Unmarshalling) wäre.
So muss man sich ansehen, wie dieser Server das Classloading handelt und wo man es konfigurieren kann: smartfoxserver classloading - Google-Suche
 
Stimmt, das war eine Sache der Serveranwendung. Ich konnte durch die Konfiguration einen gemeinsamen Classloader erzwingen, funktioniert wunderbar.
Wundervoll. 🙂
 

Zurück
Oben