2012-05-11 12 views
3

eclipseで次のJavaコードを実行すると正しい出力が得られますが、Java仕様によれば、スーパークラスのコンストラクタにはint引数が必要であり、コンパイラがクラスBに提供するコンストラクタにはスーパークラスno argコンストラクタの呼び出しが含まれていますが、定義されていません)、コマンドラインでjavacコマンドを使用してファイルをコンパイルしようとすると、 javaファイルの内容がされeclipseでコンパイルエラーが発生したときにJavaコードを実行する方法

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

次のとおりです:唯一のスーパークラスすなわちクラスAをコンパイルし、以下のコンパイルエラーで失敗

class A { 

    public A(int x) { 
     // 
    } 
} 

public class B extends A { 

    public static void main(String[] args) { 
     System.out.println("Class b"); 
    } 
} 

誰かが、クラスをコンパイルすることができないbiengなしでmainメソッドを実行する方法を説明することができます。前もって感謝します。

UPDATE

私はbinフォルダに日食でcreatdの.classファイルを削除し、クラスを実行しようとしました、そして、それは実行されませんでしたので、コンパイルすることができませんでした。しかし、パブリッククラス名のソースファイルを作成してコンテンツを保存せずに保存してから、上記のコンテンツを追加すると、機能しました。 eclipseが以前にコンパイルされたバージョンを使用して実行すると、完全なコンパイルの成功時にmainメソッドがないので、mainメソッドの出力をどのように出力できますか?

+0

同じファイルを実行していますか、他のメインクラスを実行していますか? –

+0

同じファイルを実行 –

答えて

5

実際には、以前にコンパイルされたクラスを実行したファイルを実行するだけで、以前に正常にコンパイルされたファイルをコンパイルしてビルド・エラーが発生したため、ジェネリック設定ごとの保存ごとに)。あなたがのjavacの場合には、それは単にコンパイルしながら、実行する前に、プロジェクトをきれいに試すことができます解決するために

+1

答えをいただきありがとうございます。eclipseはコンパイルエラーを表示しますが、私の質問はコンパイルエラーが発生しているにもかかわらず、コードを実行して出力を与える方法です。 –

+3

これは以前のファイルのコンパイル済みバージョンに基づいており、コンパイルが成功した後は古いクラスファイルを置き換えます –

+0

プロジェクトをクリーニングしようとしましたが、それでも同じ出力が得られました。 (すべてのコードを入力した後に)終了するため、クラスの以前にコンパイルされたバージョンを持つことは不可能です。 –

1

は、Eclipseはそれを行うべきではありません。あいまいな結果につながります。クラスをコンパイルできなかった場合は、対応する.classファイルを削除する必要があります。

binフォルダをチェックすると、B.classとA.classが存在します。 BがコンパイルされなくてもB.classを作成する理由を確認しない

関連する問題