错误:选择不包含主类型

75

我正在尝试在一个新项目中运行一些Java文件。所以我创建了这个项目,把文件放进去,然后尝试运行主文件以启动我的游戏。

但是我收到一个错误消息,内容为“选择不包含主类型”。

我已经尝试了几种方法来运行它:

  • 有人说重新启动Eclipse,我试了很多次。
  • 其他人则指出需要打开一个新项目,并将旧项目的构建路径设置为该项目。

这两种方法都没有奏效。

我非常确定它必须能够正常工作,因为我几个小时前在学校里运行过。请问该如何解决?提前感谢您的帮助!


13
你的代码中是否有任何一个 public static void main(String[] args) 方法? - user1131435
2
我有一个公共类 "name",它扩展了JFrame。 - user2321611
3
我不知道是什么原因导致这种情况,也不知道如何解决,但我确实遇到过具有main方法(当然是正确声明的)的公共类出现这种情况。只想指出这可能并不像你想象的那样简单。 - jambriz
2
我认为所有的探针都指向他试图在没有主方法的情况下运行一些类。我们将继续调查。 - aran
1
也许这是一个Maven项目,所以点击您的项目名称并按下快捷键alt+f5来更新项目。 - André Luís Tomaz Dionisio
十年后,我在Eclipse 2022-06版本上收到了它。运行在Linux Ubuntu 22.04上。在众多答案中是否有可行的答案?看起来有很多试探性的回复。 - TheGeeko61
25个回答

94

右键单击你放置主类的文件夹,然后点击 Build Path --> Use as Source Folder

最后将你的主文件作为Java应用程序运行。希望这个问题能得到解决。

如果选项“Use as Source Folder”不可见,则在“Build Path”中选择“Remove from Build Path”选项。这将允许“Use as Source Folder”选项出现在“Build Path”中。


这对我有用。我有Deital的Java Fundamentals源代码...它有章节,有文件夹和其中的Java代码。我将它们全部移动到了源文件夹中,但仍然需要执行此步骤才能使其正常工作。 - Ashu
源文件夹和目标文件夹(即Eclipse放置主类的位置)是不同的东西。你指的是“放置主类源文件的位置”。 - Gangnus
这帮助我解决了当我安装Eclipse并第一次运行程序时遇到的问题。 - Devrath
这会将所有类文件的包更改为“默认包”。 - nsandersen

48

其他答案均有效,但是如果你仍然遇到问题,可能是因为你的类不在src文件夹中,这种情况下,Eclipse可能无法将其视为项目的一部分。这也会引发你看到的同样的错误消息。


12
谢谢,文件不在src文件夹中是我的问题所在。 - Dois

28

我希望你是按照以下方式运行主类,参见截图:
Eclipse文件上下文菜单的屏幕截图

如果不是,请尝试使用此方式。如果是,请确保你要运行的类具有main方法,也就是和以下方法定义相同:

public static void main(String[] args) {
    // some code here
}

我希望这会对你有所帮助。


7

我解决了这个问题,通过添加一个新的源文件夹,并将我的Java文件放在该文件夹中。 "源文件夹" 不仅仅是任何文件夹,我认为它是Java / Eclipse的一种特殊文件夹类型,并且可以通过右键单击项目 -> 属性 -> Java构建路径 -> 源代码并添加文件夹来在Eclipse中添加。


我将Java项目添加到了它自己的源路径中,然后又遇到了另一个错误(找不到或加载主类com...),但至少进展了一点 :) 。很难相信Eclipse在这一点上是如此糟糕。 - nsandersen
这个解决方案有效。 - Vishwajeet Singh

5
Java程序的入口点是方法:
public static void main(String[] args) {
    //Code
}

如果没有这个东西,你的程序将无法运行。

3

我遇到了同样的问题。我通过右键单击包->属性->Java构建路径->添加文件夹(选择您的代码所在的文件夹)来解决它。


除非这是不同版本,否则你上面的路径中 package 应该改为 project - Carcigenicate

3

我在两个项目中都遇到了这个问题。Maven和命令行都按预期工作。问题出现在Eclipse上,有两种不同的解决方法:

项目1):将主方法声明移到类的顶部,在所有其他声明之前,如字段和构造函数。很疯狂,但它起作用了。

项目2):项目1)的解决方案无法解决问题。然而,移除lombok导入并明确编写一个getter方法可以解决该问题。

结论: Eclipse和/或lombok插件存在一个错误。


我在使用AWS SDK包时遇到了同样的问题。为了能够从Eclipse运行应用程序,我不得不从主类中删除import com.amazonaws.regions.Regions;。我正在使用AWS Java SDK v. 1.11.729。 - gparis

3

需要检查的几个事项:

  1. 你是否有一个主包?你的所有类都在这个包下面吗?
  2. 你是否使用了一个带有 public static void main(String[] args) 的主类?
  3. 你是否在主类中声明了 package ; ?
  4. 你可以在运行应用程序之前始终清理项目。在 Eclipse 中 - 只需转到 Project -> Clean,然后再次运行应用程序。

3

我在Ubuntu上运行eclipse。曾经也遇到过这个问题,但是我通过终端成功运行了程序。所以我只是把现有的public static void main(String[] args) {移到了类声明的下面(它会自动被eclipse格式化),然后下一次启动就成功了。接着,我把主方法移回到原来的位置,这一次也正常工作了。


这个答案巧妙地指出了一些Eclipse的bug,并成功地解决了它。尽管清理项目无效,其他所有事情都没问题,但答案中提到的看似无意义的操作对我有效。看起来,即使在清理项目后,Eclipse有时仍会保留一些无效的类状态,并且只有在编辑并保存Java文件后才会启动刷新。背景:我复制了一些Java文件到现有文件上,然后问题就开始了。 - miroxlav

3

虽然回答晚了,但可能对某些人有帮助:

我遇到了同样的问题,通过以下步骤解决:

在Eclipse中选择主类,然后点击菜单栏中的Window,

Window-->Show view-->Select Outline

右键点击 main(String[]):void 然后选择 Run As --> java Application

Image reference for Running Main method

通过这样做,您可以直接运行主方法。这对我起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接