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

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/identifier("Identifier") java/ProgrammingTechniquesGroup -.-> java/scope("Scope") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/create_write_files("Create/Write Files") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("Working") subgraph Lab Skills java/identifier -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/scope -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/classes_objects -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/packages_api -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/files -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/create_write_files -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} java/working -.-> lab-117393{{"「Class Interface or Enum Expected」エラーの解決方法"}} end

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 つのパッケージ宣言のみがあることを確認するようにしてください。