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 的一些预发布版本中会遇到类似的问题。为了修复错误,我删除了运行配置。您可以在菜单 Run、Run 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 找不到/加载主类的主要内容,如果未能解决你的问题,请参考以下文章