繁体   English   中英

Eclipse 找不到/加载主类

[英]Eclipse can't find / load main class

我的 Eclipse (Indigo) 运行得很好。 我创建了一个简单的类Hello 它位于文件夹ch13中的包cont中。 但是,当我尝试从 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 -cp . Hello java -cp . Hello ,有一些以java.lang.NoClassDefFoundError: Hello (wrong name: cont/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 下运行?

.metadata已损坏。

脚步:

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

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

  2. 导入项目

  3. 再次运行

  • 删除运行配置

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

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

  • 删除.metadata目录

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

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

笔记

  1. 您将看到该目录为File > Switch Workspace > Other...

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

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

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

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

注意:这在过去有效,我收到了很多赞成票。 也许这不再是一个解决方案 - 但它曾经是 - 正如 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切换

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


  • 注意:这仅在您遇到“循环错误”时才有效。 可以在“标记”选项卡中找到此错误消息

我在这里找到了解决方案


信息

  • Java 1.8.0_152
  • Eclipse Photon(2018 年 6 月)

你的班级必须有 main 函数。

public class MyDataBase {

    public static void main(String args[]) {
    
    }
}

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

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

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

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

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

我通过关闭项目,将其从 eclipse 中删除,然后再次导入来解决此错误。

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

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

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

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

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

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

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

  • 将整个主要(CTRL X)从课程中删除(仅几秒钟),
  • 保存类文件 (CTRL S)
  • 将主要背面完全粘贴在同一位置(CTRL V)

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

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

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

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

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

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

mvn eclipse:eclipse -Dwtpversion=2.0

PS:我的项目是WTP插件

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

这最终对我有用:RUN -> RUN CONFIGURATIONS -> DELETE THE RUN CONFIGURATION CLOSE ECLIPSE REOPEN ECLIPSE CREATE RUN CONFIGURATION AGAIN。

多多啊!! 有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM