Как eclipse выполняет Java-код при возникновении ошибок компиляции

Когда следующий код Java выполняется в Eclipse, он дает правильный вывод (то есть печатает «класс B»), но согласно спецификации Java код не может быть скомпилирован (так как конструктор суперкласса требуетint Аргумент и конструктор, предоставляемые компилятором для класса B, включают в себя вызов суперкласса без конструктора arg (который не определен), а при попытке скомпилировать файл с помощью команды javac в командной строке он компилирует только супер класс, т.е. A и завершается со следующей ошибкой компиляции:

<code>B.java:8: cannot find symbol
symbol  : constructor A()
location: class A
public class B extends A {
   ^
1 error
</code>

Ниже приводится содержимое файла 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>

Может кто-нибудь объяснить, как eclipse выполняет метод main без возможности bieng скомпилировать класс. Заранее спасибо.

UPDATE

Я удалил файл .class, созданный eclipse, в папке bin и попытался выполнить класс, но его не удалось скомпилировать, поэтому он не запустился. Но когда я создал исходный файл с общедоступным именем класса и сохранил его без содержимого, а затем добавил вышеупомянутое содержимое, это сработало. Если eclipse использует ранее скомпилированную версию для выполнения, как она может дать выводmain метод, так как он не имелmain метод на момент успеха полной компиляции?

Ответы на вопрос(3)

Ваш ответ на вопрос