NoClassDefFoundError je najčastejšou chybou pri vývoji v Jave. V každom prípade sa pozrime na to, prečo k tomu dochádza a čo robiť, aby sme to vyriešili
Chyba NoClassDefFoundError v jazyku Java nastáva vtedy, keď virtuálny stroj Java nemôže počas behu nájsť konkrétnu triedu, ktorá bola k dispozícii v čase kompilácie. Napríklad, ak máme volanie metódy z triedy alebo prístup k niektorému statickému členovi triedy a táto trieda nie je počas behu k dispozícii, JVM vygeneruje chybu NoClassDefFoundError.
Výnimka ClassNotFoundException vzniká, keď sa JVM pokúša načítať triedu počas behu, t. j. počas behu zadáte názov triedy a potom sa ju JVM pokúsi načítať a ak sa trieda nenájde, vygeneruje výnimku java.lang.ClassNotFoundException.
Zatiaľ čo v prípade NoClassDefFoundError bola problémová trieda prítomná v čase kompilácie, a preto sa program úspešne skompiloval, ale z nejakého dôvodu nie je dostupný v čase behu.
Musíme pridať NoClassDefFoundError do Classpath alebo skontrolovať, prečo nie je k dispozícii v Classpath. Dôvodov môže byť niekoľko, napríklad:
Zopakujme si, že nahrávač tried používa pri svojej činnosti tri základné princípy: delegovanie, viditeľnosť a jedinečnosť.
Každá inštancia zavádzača tried má priradený nadradený zavádzač tried. Predpokladajme, že zavádzač tried vašej aplikácie potrebuje zaviesť triedu A. Zavádzač tried vašej aplikácie sa najprv pokúsi delegovať hľadanie triedy A na svoj nadradený zavádzač tried a až potom sa ju pokúsi zaviesť sám. Môžete prejsť dlhým reťazcom nadradených zavádzačov, až kým sa nedostanete k úvodnému zavádzaču virtuálneho stroja Java.
V čom je teda problém? Ak je trieda A nájdená a načítaná niektorým nadradeným zavádzačom, znamená to, že podradený zavádzač ju už nenačíta, čo je pravdepodobne to, na čo čakáte, čo vedie k chybe NoClassDefFoundError.
Úvod do programovania pre každého bez prechádzajúcich znalostí.
Stiahnite so náš ebook teraz výnimočne zdarma!!!