6

明らかなコンパイルの問題にもかかわらず、Run As> Java Application を実行すると、コンソール出力を実行および出力する Eclipse(Helios)/STS に次のコードがあります。

public interface ITest{
    String func();
}

public static class Test implements ITest{
    void printFunc(){
        System.out.println("Inside Test Function");
    }
}

public static void main(String[] args) {        
    Test test = new Test();
    test.printFunc();
}

この Eclipse の機能の背後にある理由を特定できる人はいますか。

注: 外部で javac を実行すると、明らかにコンパイルに失敗します。

4

2 に答える 2

1

Eclipse の Java コンパイラは、不安定な非コンパイル コードに対処するように設計されています。コードをコンパイルするために必要なものをコードに追加します。

この質問を参照してくださいjavac と Eclipse コンパイラーの違いは何ですか?

于 2012-10-10T13:42:51.993 に答える
1

エラーが発生する前に、クラスを正常にコーディングしていた可能性があります。Eclipse は、コーディング中にファイルを自動コンパイルします。ちょうどその時、たまたまエラーが発生しました..Java アプリケーションとして実行することにした場合、Eclipse は最新のコンパイル済みクラスを実行します。

私はあなたのコードを試し、エラーを削除するために必要なメソッドを実装し、エラーを元に戻すために再度削除しました.確かに、それは出力されました"Inside Test Function". 私もコメントアウトしようとしましたがSystem.out.println("Inside Test Function");、それでも印刷されました。

別の試みでは、別のクラスを作成し、コードを追加してから実行し(自動コンパイルを避けるためにエラーを実装せずに)、エラーを出力しました..

java.lang.NoSuchMethodError: main
Exception in thread "main" 
于 2012-10-10T10:58:43.493 に答える