Устранение ошибки 'Class Interface or Enum Expected'

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Ошибка class, interface, or enum expected является распространенной ошибкой времени компиляции в Java. Она возникает, когда отсутствует фигурная скобка, метод находится вне класса или в одном файле объявлено несколько пакетов. В этом лабораторном занятии (LabEx) мы обсудим, как устранить эту ошибку в Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) 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-файла

Создайте новый Java-файл с именем Demo.java в директории ~/project с помощью следующей команды:

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 можно объявить только один пакет в каждом файле. Чтобы исправить ошибку, удалите лишнее объявление пакета:

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 возникает по разным причинам, таким как отсутствие фигурной скобки, метод вне класса или несколько пакетов в одном файле. Следуя шагам этого практического занятия (lab), вы должны быть в состоянии легко устранить эту ошибку. Не забудьте проверить код на наличие отсутствующих фигурных скобок и убедиться, что в каждом файле есть только одно объявление пакета.