Eclipse无法找到/加载主类

时间:2012-04-27 19:41:21

标签: java eclipse

我的Eclipse(Indigo)运行得很好。我创建了一个简单的类Hello。它放在文件夹cont中的ch13包中。但是,当我尝试从Eclipse运行它时,我从Java Virtual Machine Launcher获取信息:

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下运行?

21 个答案:

答案 0 :(得分:32)

.metadata已损坏。

步骤:

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

  1. 停止eclipse,删除工作区中的.metadata并重启eclipse

  2. 导入项目

  3. 再次运行

答案 1 :(得分:19)

  • 删除运行配置

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

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

  • 正在删除.metadata目录

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

    1. 关闭 eclipse
    2. 删除.metadata目录。
    3. 开始 eclipse
    4. 导入项目。
    5. 再次运行该项目。

备注

  1. 您将看到文件>的目录切换工作区> 其他...

答案 2 :(得分:18)

我已按照以下方式解决了问题:

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

转到ClassPath标签: 点击高级 - >添加文件夹 - >添加bin目录(其中包含用于Java源代码的类文件)

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

答案 3 :(得分:3)

问题

这也可能是由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 :(得分:3)

你班上必须有主要功能。喜欢

public class MyDataBase {

public static void main(String args[]) {

}
}

答案 5 :(得分:2)

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

答案 6 :(得分:1)

另一个提示:我以错误的顺序初始化静态字段 - 令人惊讶的是它没有出现问题(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();
}

答案 7 :(得分:1)

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

答案 8 :(得分:0)

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

但是我尝试了一些可能很愚蠢但对我有用的东西,并在日后购买了日食。我所做的是.. 刚刚从类中删除了main方法。保存了。撤消了将主要班级带回来的决定。多田...问题已解决... 只有一个人想说,让您的日食保持“自动构建”模式。

答案 9 :(得分:0)

将文件移动到名为cont

的子目录中

答案 10 :(得分:0)

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

答案 11 :(得分:0)

我通过关闭项目,从eclipse中删除它然后再次导入它来解决了这个错误。

可能比重做整个工作区设置更简单。

答案 12 :(得分:0)

这最终对我有用: 运行 - >运行配置 - >删除运行配置 关闭ECLIPSE REOPEN ECLIPSE 再次创建运行配置。

Tadaaaa !!它的工作原理

答案 13 :(得分:0)

我发现修复此问题的方法是重命名项目。如果你给它命名一个奇怪的字符(在我的情况下,:),它将无法找到你的类。我不知道此规则是否适用于数字,但尝试重命名项目或创建新规则并复制文件。将其命名为没有任何数字或特殊字符。

答案 14 :(得分:0)

如果您使用的是预定义的运行配置,请转到classpath并尝试“Restore Default Entries”。这将重新配置该配置的类路径。

答案 15 :(得分:0)

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

mvn eclipse:eclipse -Dwtpversion = 2.0

PS:我的项目是WTP插件

答案 16 :(得分:0)

我有同样的问题,这是我的解决方案:

  1. 我手动删除了项目的bin文件夹
  2. 然后我刷新了重新编译整个项目并创建了一个包含所有.class文件的新bin的项目
  3. 我这样做是因为当我执行Clean(项目 - >干净)时,我的.class文件没有被删除。上述解决方案对我有用,希望对别人有用。

答案 17 :(得分:0)

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

答案 18 :(得分:0)

在大多数情况下,在我的情况下,只缺少一个依赖的库。因此,请确保您的项目包含所有依赖的库(例如,如果您使用的是maven,则在pom.xml中),即使您的班级不使用它们!

答案 19 :(得分:0)

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

  • 将整个主要部分(CTRL X)从课堂上剪掉(只需几秒钟),
  • 保存类文件(CTRL S)
  • 将主背正好粘贴在同一个地方(CTRL V)

奇怪的是,之后又开始了。

答案 20 :(得分:0)

Eclipse的标准故障排除步骤应该包括在某个时刻删除并重新导入项目,这在我处理此错误时已经有效。