Подтвердить что ты не робот

"Публичный тип <<classname>> должен быть определен в собственном файле" ошибка в Eclipse

Я написал следующий код:

package staticshow;


public class StaticDemo {
  static int a = 3;
  static int b = 4;

  static {
    System.out.println("Voila! Static block put into action");
  }

  static void show() {
    System.out.println("a= " + a);
    System.out.println("b= " + b);
  }
}

public class StaticDemoShow {
  public static void main() {
    StaticDemo.show(); 
  }
}

Я получаю сообщение об ошибке:

The public type StaticDemo must be defined in its own file

в самой первой строке public class StaticDemo {. Почему это происходит и как я могу это решить? Обратите внимание, что мое имя проекта StaticDemoShow, имя пакета staticshow, а имена классов указаны в коде.

EDIT. После создания только одного класса или обоих классов по умолчанию я получаю сообщение об ошибке "Выбор не содержит основного типа". Теперь что мне делать?

4b9b3361

Ответ 1

Мы не можем иметь два открытых класса в одном файле. JVM не может понять, в одном файле мы должны написать только один открытый класс.

public class StaticDemo {

    static int a = 3;
    static int b = 4;

    static {
        System.out.println("Voila! Static block put into action");
    }

    static void show() {
        System.out.println("a= " + a);
        System.out.println("b= " + b);
    }

}
 class StaticDemoShow {
    public static void main() {
        StaticDemo.show();
    }

}

Ответ 2

Cant имеет два открытых класса в одном файле

   public class StaticDemo{

Изменить на

   class StaticDemo{

Ответ 3

Правило Java: один класс public в одном файле.

Ответ 4

Сохраните этот класс в файле StaticDemo.java. Также вы не можете иметь более одного открытого класса в одном файле.

Ответ 5

Вы не можете использовать 2 экземпляра общедоступного класса, вы должны использовать их. Попробуйте использовать класс (имя) вместо открытого класса (имя)

Ответ 6

ошибка в первой строке открытого класса StaticDemo {

Любой класс A, имеющий модификатор доступа как public, должен иметь отдельный исходный файл как A.java или A.jav. Это указано в разделе JLS 7.6:

Если и только если пакеты хранятся в файловой системе (§7.2), хост система может выбрать принуждение к ограничению времени компиляции если тип не найден в файле под именем, состоящим из имя типа плюс расширение (например,.java или .jav), если любой из верно следующее:

  • Тип упоминается кодом в других единицах компиляции пакета, в котором объявлен тип.

  • Тип объявляется общедоступным (и, следовательно, потенциально доступен из кода в других пакетах).

Однако вам, возможно, придется удалить модификатор доступа public из объявления класса StaticDemo. Тогда как StaticDemo класс не будет иметь модификатора, он станет private-package, т.е. Он будет виден только в пределах его собственного пакета.

Отъезд Контроль доступа к членам класса

Ответ 7

У вас может быть только один открытый класс в файле, и вы получите сообщение об ошибке, которое вы получаете сейчас, а имя файла должно быть именем открытого класса

Ответ 8

У меня были две значительные ошибки в моей программе. Из других ответов, которые я узнал в одной программе Java, нельзя объявить два класса "общедоступными". Поэтому я изменил спецификатор доступа, но получил еще одну ошибку, добавленную в мой вопрос как "EDIT", что "Выбор не содержит основного типа". Наконец, я заметил, что забыл добавить часть "String args []" в мой основной метод. Вот почему код не работал. После исправления он работал, как ожидалось.