Dziwne rzutowanie

0

Dziś spotkałem się z czymś takim, że w tej linii kodu:

import com.(...).LongLogicalBlock;
class BlaBla
{
private LongLogicalBlock longBlock;
.
.
.
}
private void jakasMetoda()
{
longBlock = new LongLogicalBlock( drive, new Random() ); // tu bląd
}

dostałem takie coś dla ostatniej linii:
Exception: java.lang.ClassCastException: com.(...).EccDriveInfo cannot be cast to com.(...).EccDriveInfo
dodam oczywiście że w (...) jest ta sama ścieżka. Zna ktoś powód czegoś takiego?

0

Aplet czy aplikacja ?
Jeśli aplet, to zajrzyj tu http://4programmers.net/Forum/viewtopic.php?id=132208.
W aplikacji widziałem coś takiego gdy loader trafił na inna klasę o takiej samej nazwie.

0

aplikacja. dokladnie jest to fragment wtyczki. laduje poprawnie. po późniejszym uruchomieniu kodu z niej wlasnie wypluwa taki wyjatek. innej klasy o tej nazwie nie ma wlasnie i to mnie dziwi.

0

Moje kłopoty z rzutowaniem klasy Ucho na klasę Ucho w aplecie sugerują taki mechanizm: JRE ma rzutować instancję u klasy Applet, instancja u zawiera informację że naprawdę jest typu Ucho, ale definicja klasy Ucho nie jest widoczna, JRE nie może zatem sprawdzić czy to jest właściwe Ucho. W skrócie JRE nie widzi definicji klasy Ucho.

0

A czy obie klasy EccDriveInfo sa wczytywane przez ten sam Classloader? Jesli nie, moga takie problemy wystapic. Zobacz ta dyskusje, moze naprowadzi na cos (przedostatni post 2.strona):
http://4programmers.net/Forum/viewtopic.php?id=131532&start=10
Pozdrawiam.

0

gdyby bylo tak jak sugerujesz problem pojawilby sie również z innymi importowanymi klasami. ogolnie we wtyczce jest kilkasiedziat plikow i klas. i niejednokrotnie byla uruchamiana. Swoją tym problem samoczynnie zniknął po ponownym uruchomieniu programu i więcej się nie powtórzył mimo braku zmian w kodzie.
ClassLoader jest jeden ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1