Разве мы не можем запустить основной метод внутри перечисления?

Я видел видео, где main() можно запускать в enum. Я пытаюсь сделать то же самое, но это не работает.

Вот мой код

public enum EnumMain {                             
   ABC, XYZ;                                       
   public static void main(String[] args) {        
     System.out.print("MIAN");                     
   }                                               
}

Вывод (код компилируется нормально)
Error: Could not find or load main class EnumMain

Я думаю, что это как-то связано с версией Java, может быть, в Java 8 они больше не позволяют запускать метод main() из enum.

PS Я компилирую и запускаю файл из командной строки Windows.

Примечание. Если я изменю enum на class, все будет работать нормально (у меня нет проблем с путем к классам)


person Soumitri Pattnaik    schedule 05.06.2016    source источник
comment
Каков пакет вашего класса и из какой папки вы выполняете свою программу?   -  person dunni    schedule 05.06.2016
comment
@dunni пакета нет, я просто создаю файл .Java и компилирую, запуская его из командной строки.   -  person Soumitri Pattnaik    schedule 05.06.2016
comment
Какую именно команду вы используете для ее выполнения?   -  person dunni    schedule 05.06.2016
comment
В перечислениях и основном методе нет ничего особенного. Измените свой enum на обычный класс, и вы увидите, что по-прежнему не можете запустить main, потому что у вас есть проблемы с путями к классам.   -  person Bohemian♦    schedule 05.06.2016
comment
@Bohemian Я могу запустить класс, если я изменю перечисление на класс, грустно, что вы пометили его как дубликат, не зная ситуации rofl   -  person Soumitri Pattnaik    schedule 05.06.2016
comment
@SoumitriPattnaik Я могу запустить твой код, хорошо. Проблема, с которой вы столкнулись, не имеет ничего общего с перечислением.   -  person Bohemian♦    schedule 05.06.2016
comment
Смотрите… это работает.   -  person Holger    schedule 06.06.2016
comment
@Holger да, но на моей машине этого нет, я могу запустить main в классе, я не знаю, в чем проблема   -  person Soumitri Pattnaik    schedule 06.06.2016
comment
У нас нет никакой информации о вашей машине, кроме того, что вы написали в своем вопросе (другими словами, ничего). Он должен работать, он работает на наших машинах, он работает на Java 7 и Java 8, так что в чем бы ни заключалась ваша проблема, она не описана в вашем вопросе…   -  person Holger    schedule 06.06.2016


Ответы (2)


Вы можете запустить main в enum.

public enum TestEnumMain{
    val1, val2;
    public static void main(String[] args)
    {
        System.out.println("Hello");
    }
}

Проблема будет с вашими переменными пути. Убедитесь, что они настроены правильно. Обратитесь к этой теме для правильной установки переменных пути.

person Jaydev    schedule 05.06.2016
comment
Если бы у меня была проблема с путем к классам, я бы не смог запустить какой-либо класс Java, но могу, так что дело не в пути к классам. - person Soumitri Pattnaik; 05.06.2016
comment
Можете ли вы указать точную команду, которую вы пытались использовать, значение переменной пути и путь, по которому находится ваш файл перечисления? - person Jaydev; 05.06.2016
comment
echo %JAVA_HOME% возвращает C:\Program Files\Java\jdk1.8.0_45 И я также вижу это в моем PATH - person Soumitri Pattnaik; 05.06.2016

Нет, я запустил ваш код на Java 8, и он идеален. Он работает, чтобы дать результат MIAN. Думаю проблема кроется в classpath или в вашем IDE. Вы можете попробовать после очистки проекта.

person Sanjeev Saha    schedule 05.06.2016
comment
Какая у вас точная версия Java, у меня 1.8.0_66. Вы можете проверить это, набрав java -version в командной строке.\ - person Soumitri Pattnaik; 05.06.2016
comment
Я запускаю файл с помощью блокнота и командной строки - person Soumitri Pattnaik; 05.06.2016
comment
Моя версия Java: java version "1.8.0_45" - person Sanjeev Saha; 05.06.2016
comment
@SoumitriPattnaik Даже я также запускал его в командной строке. Ничего страшного. Пожалуйста, используйте -cp ., если ваш java не находит main класс. - person Sanjeev Saha; 05.06.2016
comment
@SoumitriPattnaik Эта программа работает в вашей системе? - person Sanjeev Saha; 05.06.2016
comment
если я изменю enum на class и удалю константы перечисления, тогда все будет работать отлично. Если я сделаю это enum, то только он показывает ошибку. - person Soumitri Pattnaik; 05.06.2016