我的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下运行?
答案 0 :(得分:32)
.metadata
已损坏。
步骤:
警告:删除.metadata将删除所有Eclipse配置,插件和项目设置。在尝试之前进行备份!
停止eclipse,删除工作区中的.metadata并重启eclipse
导入项目
再次运行
答案 1 :(得分:19)
有时我在 eclipse 的一些预发布版本中遇到类似的问题。要修复错误,我会删除运行配置。您可以在菜单中找到运行,运行配置 ...
然后我用 Alt + Shift + X ,然后 J 启动应用程序。如果这不起作用, Ctrl + F11 。
.metadata
目录另一方面,当前工作空间的配置设置可能已损坏。这些设置位于当前工作区 1 的.metadata
目录中。在这种情况下,除了删除目录之外别无选择:
.metadata
目录。备注的
答案 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
的方法信息
答案 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)
我有同样的问题,这是我的解决方案:
我这样做是因为当我执行Clean(项目 - >干净)时,我的.class文件没有被删除。上述解决方案对我有用,希望对别人有用。
答案 17 :(得分:0)
可以在lib目录中通过excample获得2个groovy-xxx-all.jar文件。这使得应用程序没有运行
答案 18 :(得分:0)
在大多数情况下,在我的情况下,只缺少一个依赖的库。因此,请确保您的项目包含所有依赖的库(例如,如果您使用的是maven,则在pom.xml中),即使您的班级不使用它们!
答案 19 :(得分:0)
我通过这样做解决了我的问题:
奇怪的是,之后又开始了。
答案 20 :(得分:0)
Eclipse的标准故障排除步骤应该包括在某个时刻删除并重新导入项目,这在我处理此错误时已经有效。