「Class Interface or Enum Expected」エラーの解決方法

JavaBeginner
オンラインで実践に進む

はじめに

class, interface, or enum expected エラーは、Java でよく見られるコンパイル時エラーです。中括弧が欠けている場合、メソッドがクラスの外にある場合、または単一のファイル内で複数のパッケージが宣言されている場合に発生します。この実験では、Java でこのエラーを解決する方法について説明します。

Java ファイルを作成する

次のコマンドを使用して、~/project ディレクトリに Demo.java という名前の新しい Java ファイルを作成します。

touch Demo.java

「Class Interface or Enum Expected」エラーを発生させる

次のコードを Demo.java ファイルにコピーして貼り付けます。

package com.example;
public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
public class SomeClass {
    // do something
}

ファイルを保存し、ターミナルで次のコマンドを実行します。

javac Demo.java

次のエラーメッセージが表示されるはずです。

Demo.java:6: error: class, interface, or enum expected
public class SomeClass {
^
1 error

このエラーは、メインクラス Demo の外に余分なクラスがあることを示しています。

欠落している中括弧を確認する

次のコードを Demo.java ファイルにコピーして貼り付けます。

package com.example;

public class Demo {
    public static void main(String[] args) {
        int a = 10, b = 15;
        System.out.print("The Sum is: " + (a + b));
    }
}

ファイルを保存し、ターミナルで次のコマンドを実行します。

javac Demo.java

次のエラーメッセージが表示されるはずです。

Demo.java:7: error: ';' expected
        System.out.print("The Sum is: " + (a + b));
                                                  ^
1 error

このエラーは、main メソッドの末尾に中括弧が欠けていることを示しています。エラーを修正するには、print 文の後に閉じ中括弧を追加します。

package com.example;

public class Demo {
    public static void main(String[] args) {
        int a = 10, b = 15;
        System.out.print("The Sum is: " + (a + b));
    }
}

ファイルを保存し、再度次のコマンドを実行します。

javac Demo.java

今度はコードはエラーなしでコンパイルされます。

複数のパッケージ宣言エラーを修正する

次のコードを Demo.java ファイルにコピーして貼り付けます。

package com.example;

package com.example.test;

public class Demo {
    public static void main(String[] args) {
        int a = 10, b = 15;
        System.out.print("The Sum is: " + (a + b));
    }
}

ファイルを保存し、ターミナルで次のコマンドを実行します。

javac Demo.java

次のエラーメッセージが表示されるはずです。

Demo.java:3: error: class, interface, or enum expected
package com.example.test;
^
1 error

このエラーは、同じファイル内で複数のパッケージが宣言されていることを示しています。Java では、1 つのファイルにつき 1 つのパッケージしか宣言できません。エラーを修正するには、余分なパッケージ宣言を削除します。

package com.example;

public class Demo {
    public static void main(String[] args) {
        int a = 10, b = 15;
        System.out.print("The Sum is: " + (a + b));
    }
}

ファイルを保存し、再度次のコマンドを実行します。

javac Demo.java

今度はコードはエラーなしでコンパイルされます。

まとめ

「class, interface, or enum expected」エラーは、中括弧の欠落、クラスの外にメソッドがある、または単一のファイル内に複数のパッケージがあるなど、さまざまな理由で発生します。この実験の手順に従えば、このエラーを簡単に解決できるはずです。コードを確認して欠落している中括弧がないことを確認し、1 つのファイルには 1 つのパッケージ宣言のみがあることを確認するようにしてください。