Jak eclipse wykonuje kod java, gdy występują błędy kompilacji
Gdy następujący kod java jest wykonywany w eclipse, daje poprawne wyjście (tj. Drukuje 'Class B'), ale zgodnie ze specyfikacją java, kod nie może być skompilowany (ponieważ konstruktor super klasy wymagaint
argument i konstruktor dostarczony przez kompilator do klasy B zawiera wywołanie super klasy bez konstruktora arg, który nie jest zdefiniowany), a gdy próbujesz skompilować plik za pomocą polecenia javac w wierszu poleceń, kompiluje on tylko superklasę, tj. klasę A i kończy się niepowodzeniem z następującym błędem kompilacji:
<code>B.java:8: cannot find symbol symbol : constructor A() location: class A public class B extends A { ^ 1 error </code>
Poniżej przedstawiono zawartość pliku java:
<code>class A { public A(int x) { // } } public class B extends A { public static void main(String[] args) { System.out.println("Class b"); } } </code>
Czy ktoś może wyjaśnić, jak eclipse wykonuje główną metodę bez możliwości kompilacji klasy. Z góry dziękuję.
AKTUALIZACJA
Usunąłem plik .class utworzony przez eclipse w folderze bin i próbowałem wykonać klasę i nie można go skompilować, dlatego nie uruchomiłem. Ale kiedy utworzyłem plik źródłowy o nazwie klasy publicznej i zapisałem go bez zawartości, a następnie dodałem powyższą zawartość, zadziałało. Jeśli eclipse używa poprzednio skompilowanej wersji do wykonania, jak może dać wynikmain
metoda, ponieważ nie miałamain
metoda w momencie pełnej kompilacji sukcesu?