Eclipse 找不到/加载主类

Posted

技术标签:

【中文标题】Eclipse 找不到/加载主类【英文标题】:Eclipse can't find / load main class 【发布时间】:2012-05-08 13:39:23 【问题描述】:

我的 Eclipse (Indigo) 运行良好。我创建了一个简单的类Hello。它位于文件夹ch13 中的包cont 中。但是,当我尝试从 Eclipse 运行它时,我会从 Java 虚拟机启动器获取信息:

Could not find the main class: cont.Hello.  

我试图从这个包中运行其他类,它们运行得很好(那是以前存在的类)。然而,我在这个包中创建的任何新类都有这些问题。实际上,我在 Eclipse 中创建的任何新类都会遇到这个问题。我决定从命令行检查它是如何工作的。似乎问题仍然存在 - 我得到同样的错误。我检查了路径,它是C:\Program Files\Java\jdk1.7.0_02\bin,这是正确的(注意其他类可以从 Eclipse 运行)。我尝试使用java -cp . Hello 运行,并且以java.lang.NoClassDefFoundError: Hello (wrong name: cont/Hello) 开头产生了一些错误。代码本身很简单:

package cont;

public class Hello 
    public static void main(String[] args)
        System.out.println("Hello");
    


我怎样才能修复它,以便我的类仍然在 Eclipse 下运行?

【问题讨论】:

eclipse是否为Hello生成了.class文件?如果你使用 maven,我认为它通常在 bin/ 或 target/ 中 没有使用 maven。试图在 cont 文件夹中查找类,但没有。即使从命令行编译(类在文件夹中)它也不会启动 可能有很多问题。我会检查源文件夹是否在正确的构建路径上(右键单击您的项目-> 属性-> java 构建路径-> 源并确保选择 src 文件夹之前的路径),还要检查相同的输出文件夹路径方式.. 看来你是对的 htulsiani。请提出这样的问题,我会接受它作为正确答案。谢谢 我遇到了同样的问题,并在此线程上找到了更好的解决方案(第二个答案):***.com/questions/11239086/… 这是一个更好的解决方案,因为您不必删除 .metadata 并浪费宝贵的时间重新导入项目和 ui 设置 【参考方案1】:

您的班级中必须有 main 函数。喜欢

public class MyDataBase 

    public static void main(String args[]) 
    
    

【讨论】:

【参考方案2】:

我阅读了很多博客并尝试了很多技巧,但我的问题没有解决。我能够运行代码但无法生成 jar 文件。 :( 伤心..

但我尝试了一些可能非常愚蠢但对我有用的东西,并在跟踪中购买了 eclipse。我所做的是.. 刚刚从类中删除了主要方法。保存了它。撤消以将主要课程带回来。田...问题解决了... 只想说,让你的 Eclipse 保持在“自动构建”模式。

【讨论】:

【参考方案3】:

注意:这在过去很有效,我收到了很多赞成票。也许这不再是一个解决方案 - 但它曾经是 - 正如 eclipse 版本所指出的那样。


问题

这也可能是由 Java 构建路径问题引起的。

就我而言,我遇到了一个错误:

A cycle was detected in the build path of project project. The cycle consists of projects x, y, z.

当您在要运行的项目的构建路径中包含其他项目时,可能会发生这种情况。实际上,所有项目都将无法运行并出现错误 Could not find the main class: Example.class


解决方案

打开

Windows -> Preferences -> Java-> Compiler -> Building -> Build Path Problems

取消选中 Abort build when build path errors occur 切换

如果您最终遇到我想象的其他构建路径错误,这似乎是一罐蠕虫。所以谨慎使用


注意:这只适用于“循环错误”。此错误消息可在“标记”选项卡中找到

我找到了这个here的解决方案


信息

Java 1.8.0_152 Eclipse Photon(2018 年 6 月)

【讨论】:

【参考方案4】:

我在升级到 Eclipse 2019-12 版本后遇到了这个问题。不知何故,启动 JVM 的命令行太长了,我不得不在运行配置中启用 jar-classpath 选项(右键单击文件 -> 运行方式 -> 运行配置)。

【讨论】:

【参考方案5】:

.metadata 已损坏。

步骤:

警告:删除 .metadata 将删除所有 Eclipse 配置、插件、项目设置。在尝试此操作之前进行备份!

    停止eclipse,删除workspace中的.metadata,重启eclipse

    导入项目

    再次运行

【讨论】:

删除所有 .metadata 是否有风险?这是否包括任何难以重新创建或重新安装的内容? 我删除了工作空间/.metadata(其中包含其他文件)并且丢失了所有插件和观点。这不是一件好事。很明显,重启后,丢失main的问题依然存在。 它解决了我的问题。如果您不想删除 .metadata 而不是将其复制到另一个文件夹中。 请在回答中就删除此文件夹的后果提出警告。 这是有史以来最糟糕的答案。它会删除您的所有用户库。不要尝试!【参考方案6】:

我通过关闭项目、将其从 Eclipse 中删除然后再次导入来解决了这个错误。

可能比重做整个工作区设置要简单一些。

【讨论】:

这个解决方案对我有用!!简单高效。谢谢 J. Doe【参考方案7】:

重命名主类就足够了(也是最简单的): - 转到您的班级并将光标设置为您的班级名称; - ALT + Shift + R 并重命名类(如果没有自动完成,则构建); - 您现在应该可以运行它了; - 如果需要,将类重命名为旧名称;

【讨论】:

【参考方案8】:

这终于对我有用了: 运行 -> 运行配置 -> 删除运行配置 关闭日食 重新打开 ECLIPSE 再次创建运行配置。

Tadaaaa !它的工作原理

【讨论】:

【参考方案9】:

我在一个 Maven 项目中遇到了同样的问题。在项目中创建 src/test/java 文件夹后,错误消失了。

【讨论】:

src/test/java 已经为我的项目准备好了。现在该怎么办?【参考方案10】:

我发现解决这个问题的方法是重命名项目。如果你给它起一个带有奇怪字符的名字(在我的例子中是:),它会很难找到你的班级。我不知道这条规则是否适用于数字,但请尝试重命名项目或创建一个新项目并复制文件。命名时不带任何数字或特殊字符。

【讨论】:

【参考方案11】:

如果您使用的是预定义的运行配置,请转到类路径并尝试“恢复默认条目”。这将为该配置重新配置类路径。

【讨论】:

【参考方案12】:

删除运行配置

有时我在 eclipse 的一些预发布版本中会遇到类似的问题。为了修复错误,我删除了运行配置。您可以在菜单 RunRun Configurations...

中找到它

然后我用 Alt+Shift+X 启动应用程序,然后是 J。如果这不起作用,Ctrl+F11

删除.metadata目录

另一方面,您当前工作区的配置设置可能已损坏。这些设置位于您当前工作区的.metadata 目录中 1。在这种情况下,除了删除目录别无选择:

    关闭eclipse。 删除.metadata目录。 开始eclipse。 导入项目。 再次运行项目。

注意事项

    您将看到带有 File > Switch Workspace > Other... 的目录

【讨论】:

删除.metadata 目录可能会对您有所帮助。 1.- 关闭 eclipse 2.- 在文件夹-eclipse/configuration/.settings 中编辑(使用记事本)文件 org.eclipse.ui.ide.prefs。在 RECENT_WORKSPACES 字段中删除路径(以 \n 结尾)保存文件 3.- 启动 eclipse 是的,去运行->运行配置并删除导致问题的那个为我解决了这个问题。 我已将粘贴的元数据文件夹剪切到桌面。问题已经解决了。然后我将插件文件夹移回新创建的元数据文件夹。据我所知,问题仍然解决了,我的插件、偏好和项目又回来了。 元数据目录在哪里?我在任何地方都找不到它。【参考方案13】:

我遇到了同样的问题。我用以下命令 maven 解决了:

mvn eclipse:eclipse -Dwtpversion=2.0

PS:我的项目是WTP插件

【讨论】:

【参考方案14】:

我遇到了同样的问题,这是我的解决方案:

    我手动删除了项目的bin文件夹 然后我刷新了项目,它重新编译了整个项目并创建了一个包含所有 .class 文件的新 bin

我这样做是因为当我执行 Clean(project->clean) 时,我的 .class 文件没有被删除。上述解决方案对我有用,希望对其他人有用。

【讨论】:

【参考方案15】:

在 lib 目录下可以有 2 个 groovy-xxx-all.jar 文件。这使得应用程序没有运行

【讨论】:

【参考方案16】:

我通过这样做解决了我的问题:

将整个主目录 (CTRL X) 从课堂中删除(仅几秒钟), 保存类文件 (CTRL S) 将主页面完全粘贴到同一个位置 (CTRL V)

奇怪的是它在那之后又开始工作了。

【讨论】:

【参考方案17】:

我已经通过以下方式解决了这个问题:

转到运行配置(右键单击Java文件->运行->运行配置)。

转到类路径选项卡: 点击高级 -> 添加文件夹 -> 添加 bin 目录(其中包含 Java 源代码的类文件)

重新运行代码,现在可以解决问题了。它对我有用

【讨论】:

在各种常见的 Eclipse “黑暗中挣扎”练习之后,这个解决方案对我有用。 我同意。比删除所有元数据安全得多,并且它正确地解决了问题,即通过添加应该自动识别但没有自动识别的路径引用。 它是一个 Maven 项目。所以eclipse中的bin文件夹。 @JSlick - 对于 Maven 项目,我需要添加哪个文件夹? src 或 s/main 或 src/main/java 或 src/main/java... 直到你的 java 类有 main 方法?【参考方案18】:

另一个提示:我以错误的顺序初始化静态字段 - 令人惊讶的是,它没有提出问题(NullPointerException?),而是 Eclipse 准确地抱怨了 OP 发布的消息。更正静态初始化顺序使类可以运行。示例:

private static ScriptEngineManager factory = null;
private static ScriptEngine engine = null;
static 
    engine = factory.getEngineByName("javascript");
    // factory is supposed to initialize FIRST
    factory = new ScriptEngineManager();

【讨论】:

【参考方案19】:

Eclipse 的标准故障排除步骤应包括在某些时候删除和重新导入项目,当我处理此错误时,这些步骤已经奏效。

【讨论】:

【参考方案20】:

将文件移动到名为 cont 的子目录中

【讨论】:

并使用java -cp . cont.Hello从***目录运行它 该文件已经在名为 cont 的目录中 - 我应该从它上面的目录中运行它吗?我已经做到了,并且有效。然而,这不是主要问题。问题是我希望这些类从 Eclipse 级别运行,而他们目前不这样做。 确保此应用程序的 Eclipse 调试配置文件配置正确 我对所有类都使用相同的调试配置文件。没有切换视角或任何东西。其中一些(旧的)运行良好,而新的则没有 因为您已将它们移至新目录。您需要更新您的调试配置文件

以上是关于Eclipse 找不到/加载主类的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 错误;找不到或无法加载主类

如何解决Eclipse下“找不到或无法加载主类”的错误

如何解决Eclipse下“找不到或无法加载主类”的错误

如何解决Eclipse下“找不到或无法加载主类”的错误?

在eclipse中运行错误,找不到或无法加载主类,环境变量没有错

eclipse找不到或无法加载主类