【问题标题】:Can't we run main method inside enum? [duplicate]我们不能在枚举中运行 main 方法吗? [复制]
【发布时间】:2016-06-05 08:47:39
【问题描述】:

我看过一个视频,其中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 中,他们不再允许从 enum 运行 main() 方法。

PS 我正在从 Windows 命令提示符编译和运行该文件。

注意如果我将enum 更改为class,那么它运行良好(我没有任何类路径问题)

【问题讨论】:

  • 你的类的包是什么,你从哪个文件夹执行你的程序?
  • @dunni 没有包,我只是创建一个 .Java 文件并编译,从命令提示符运行它。
  • 你用来执行它的确切命令是什么?
  • 枚举和主方法没有什么特别之处。将您的枚举更改为常规类,您会发现您仍然无法运行主类,因为您有类路径问题。
  • @Bohemian 如果我将枚举更改为类,我可以运行该类,很遗憾您将其标记为重复,而不知道情况 rofl

标签: java enums java-8 enumeration


【解决方案1】:

您可以在枚举中运行 main。

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

问题出在您的路径变量上。确保它们配置正确。请参阅this thread 以正确设置路径变量。

【讨论】:

  • 如果我有类路径问题,那么我无法运行任何 Java 类,但我可以,所以这与类路径无关。
  • 您能否包含您尝试使用的确切命令、路径变量值和枚举文件所在的路径?
  • echo %JAVA_HOME% 返回C:\Program Files\Java\jdk1.8.0_45 我也可以在我的PATH 中看到它
【解决方案2】:

不,我已经在Java 8 上运行了您的代码,它非常完美。它运行以提供输出MIAN。我认为问题在于classpath 或您的IDE。您可以在清理项目后尝试。

【讨论】:

  • 您的确切 java 版本是什么,我的是“1.8.0_66” 您可以通过在命令提示符中键入“java -version”来检查。\
  • 我正在使用记事本和 cmd 提示符运行文件
  • 我的Java版本是:java version "1.8.0_45"
  • @SoumitriPattnaik 即使我也在命令提示符下运行它。没关系。如果您的java 找不到main 类,请使用-cp .。
  • @SoumitriPattnaik 这个程序可以在你的系统上运行吗?
猜你喜欢
  • 2011-11-20
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2013-02-16
相关资源
最近更新 更多