Spaß mit Java. Heute: VerifyError bei inneren Klassen


Eigent­lich woll­te ich heu­te den neus­ten Build unse­rer Soft­ware releasen. Mit dem vori­gen hat­te es näm­lich ein Pro­blem gege­ben: Bei unse­rer Mit­ar­bei­te­rin waren Feh­ler­re­ports auf­ge­lau­fen, dass sich eine Mas­ke nicht öff­nen ließ. Prü­fung mei­ner­seits: Die Java-Lauf­zeit­um­ge­bung mel­det einen „Veri­f­y­Er­ror”. Hm. Muss wohl was beim Packen schief­ge­gan­gen sein.

Also heu­te mor­gen den Pack­pro­zess genau beob­ach­tet: Alles roger. Trotz­dem das Bina­ry noch­mal getes­tet: Bautz! Feh­ler immer noch da.

Und dann habe ich wirk­lich den gesam­ten Tag damit zuge­bracht, das Pro­blem zu ana­ly­sie­ren und letzt­lich zu lösen: Der Com­pi­ler von Java 1.4.2, selbst in der aktu­el­len 1.4.2_12-Version, macht einen Feh­ler, wenn man aus der inne­ren Klas­se einer inne­ren Klas­se her­aus eine Metho­de der äußers­ten Klas­se auf­ruft. Mein Codebeispiel:

Fie­ser­wei­se tritt der Bug im Eclip­se-eige­nen Com­pi­ler nicht auf. Nach­dem das Pro­blem loka­li­siert hat­te, habe ich den Feh­ler auch in der Bug-Daten­bank bei Sun gefun­den. Dort steht, dass er mit Java 1.5 gefixt ist.

Wer­de ich wohl doch mal den Com­pi­ler fürs Pro­duk­tiv­sys­tem umstel­len. Zunächst noch im 1.4‑Kompatibilitätsmodus, aber der end­gül­ti­ge Schwenk zu Java 1.5 ist auch nicht mehr so lan­ge weg…

Dass es sowas gibt… Ich ver­wen­de ja nun den Sun-Com­pi­ler extra wegen der Kom­pa­ti­bi­li­tät und so. Frü­her, als ich noch mit jikes die Releases kom­pi­liert habe, da kam sowas ja häu­fi­ger vor. Tststs…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert