Eclipse“错误:无法找到或加载主类”


108

我在笔记本电脑上有一个日食项目,我将其推送到Git https://github.com/chrisbramm/LastFM-History-Graph.git

它可以完全在我的笔记本电脑上运行,并且可以正常运行/构建,但是在我的台式机上,Eclipse没有显示错误

错误:找不到或加载主类lastfmhistoryguis.InputPanel

我尝试从以下位置构建项目:

Project>Build Project

但是什么也没发生。我已PATH在此计算机上将变量设置为JRE6,JRE7和JDK 1.7.0,即使这些变量未在笔记本电脑上设置。

我确实有JAR文件(last.fm-绑定-0.1.1.jar这是在我的).classpath文件,该文件是在C:\用户\克里斯\下载文件夹在我的笔记本电脑,因此它不包括在git的树,我最近将其带入项目文件夹并提交,但是我不确定我是否做对了。这是否也会引起问题,但是这里没有主要论点。

我现在无法解决问题,需要检查/更改。


24
您是否尝试过Project> Clean and Project> Build Project?
javaCity 2012年

3
多次,似乎没有用
克里斯(Chris


系统环境分类路径包括。我还需要在其他地方更改,我将具体做什么?
克里斯(Chris

就我而言,我本java .\bin\selenium-server-standalone-3.9.1.jar该在应有的状态下跑步java -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Answers:


40

在类路径中,您使用的是绝对路径,但是您已将项目移至可能具有不同文件结构的新计算机上。

因此,在您的类路径中,您应该使用相对路径(如果可能将JARS与项目捆绑在一起,通常也可以):

在您的.classpath更改中

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>

19
一个人将如何改变呢?
Aequitas 2015年

我没有外部罐子,但面临类似问题。stackoverflow.com/questions/49738153/…–
Jesse,

@Aequitas执行“运行”->“运行方式”->“ Java应用程序”。一次,它将自动设置类路径。请参阅Blamkin86的答案。类路径设置可以在“运行”->“运行配置...”下找到。
gkubed

72

如果使用创建Java类public static void main(String[] args),则Eclipse将通过右键单击文件本身或项目资源管理器中的文件,为您运行该main方法,然后选择:

“运行方式”->“ Java应用程序”。

完成此操作后,Eclipse将存储有关类的信息,因此您可以轻松地从“运行方式”菜单(工具栏上的绿色“播放”按钮)或“运行配置”对话框中再次运行该类。

如果随后移动了Java类(手动,或者,但是),则再次选择

“运行方式”->“ Java应用程序”

从新位置开始,Eclipse将运行原始存储的配置,尝试从其原始位置调用该类,这将导致此错误。


解决方案:
对我来说,解决方法是转到运行配置(绿色播放按钮->运行配置),并删除对该类的所有引用。下次您运行

“运行方式”->“ Java应用程序”

Eclipse将为移动的类编写新的配置,错误将消失。


2
谢谢..!!这个为我工作。当我更改项目名称时,问题开始了。
NixRam 2014年

+1 public static void main(String[] args)是吸引我的原因。我不小心签了错(Main而不是main)。因此,确保签名正确是很重要的。:)
Nicholas Miller

10
我们如何“删除对类的所有引用”?
aCarella

2
像魅力一样工作。我的问题是我创建了一个build.gradle和settings.gradle,它们正在更改与项目关联的默认名称。删除引用(运行方式->运行配置->删除与项目关联的所有配置)
randombee '16

1
“删除对类的所有引用”-是否应删除所有运行配置?
jcool

55

tl; dr:清除整个构建路径以及您手动添加的所有内容。这包括其他来源,项目,图书馆。

  • 项目->清洁
  • 确保项目->自动构建处于活动状态
  • 项目->属性-> Java构建路径->库:删除您曾经添加的所有外部库。不要删除诸如JRE系统库之类的标准库。
  • 现在尝试运行您的主类。“找不到/加载类”错误应该消失了。尝试一个接一个地添加您的外部库/ jar。

这背后的原因:编译器在将库链接到项目时遇到问题。它失败并产生了错误的错误消息。

就我而言,应该是类似“无法将AutoHotkey.dll添加到构建路径”之类的东西,因为那是导致编译器失败的原因。


如果仍然无法解决问题,请查看Eclipse内置ErrorLog

窗口->显示视图->常规->错误日志


26

我做了上面提到的所有事情,但没有一个对我有用

我的问题解决如下:

  1. 右键单击项目>属性> JavaBuildPath>库
  2. 删除jar文件,上面带有红色标记。
  3. 如果问题仍然存在,请尝试以下解决方案。当我第二次遇到这个问题时,这对我有用:
    1. 右键单击 项目>属性> Java构建路径>库
    2. 删除图书馆
    3. 添加库。(选择JRE系统库)

为我工作!我的项目文件夹名称旁边也有一个感叹号。这也解决了
苯扎比尔

为我工作!谢谢
Dhruv Kaushal '18年

1
只需删除并重新添加相同的Java JRE库即可完成此工作
Andrew Norman,

这工作对我来说,即使没有警告也没有感叹号
米哈尔莱昂

兄弟,您刚刚保存了我的AP Java项目,您根本不知道谢谢您
Rohan Singh

18

我花了近一个小时后在我的maven webapp项目中遇到了类似的问题,我找到了一个对我有用的解决方案。我键入了以下maven命令,

mvn clean install -U
我不知道其背后的确切原因。


1
对我来说也是一样-也不知道为什么会首先发生。
nsof

在Eclipse中,右键单击Run As..Maven clean,然后Run As..Maven install为我做了。当我将Eclipse Java项目更改为Eclipse Maven项目时,问题开始了。+1指向右方向。
CodeMed

-U,
-update

9

我假设您已将项目导入到桌面eclipse安装中?在这种情况下,您应该只选择Project> Clean。然后重建您的项目。对我来说就像一个魅力。


9

我有同样的问题,并使用以下方法解决了问题:

Eclipse Mars
Egit
Github
Maven Project

问题是我将我的Maven项目提供给github。它搬到我的项目我的github上的文件夹。

解:

  • 关闭Eclipse
  • 删除工作区中的元数据文件夹
  • 重新启动Eclipse

将显示开始屏幕。

  • 关闭开始画面
  • 右键单击进入包浏览器
  • 选择“导入Maven项目”,
  • 导航到您的github文件夹并导入maven项目。

此后,我的项目成功编译。


7

通过以下任一方法检查您的项目是否具有构建器:

  • 检查项目属性(在“包资源管理器”中,右键单击项目,选择“属性”),第二部分是“ Builders”,并且应保留默认的“ Java Builder”
  • 或在“ .project”文件中(在... / workspace / yourProjectName / .project中)中,“ buildSpec”部分不应为空。

肯定还有其他方法,但是我所做的是:

  • 关闭日食
  • 编辑。“ project”文件以添加“ buildSpec”部分
  • 重新开始蚀

适当的最小Java“ .project”文件应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>

1
这为我解决了。您无需关闭Eclipse即可更改.project文件,只需关闭项目即可。
路易斯·索萨

另一方面,我只是关闭了Eclipse(但未编辑.project文件。重新打开Eclipse,并且它起作用了:错误消失了。)
Shahar

6

那么以下对我有用...

  1. 进入项目文件夹(内部workspace
  2. 然后,删除bin文件夹
  3. 然后,清理项目(在Eclipse中)
  4. 从Eclipse构建/运行。

欢迎来到DeeCod。在其他答案中已经建议删除bin文件夹并执行“项目>清理”和构建。我建议您获得足够的声誉(您只需要50个)来发表评论,并确认在评论中有一种特定的方法对您有用,而不是发布“我也”作为答案。
Amos M. Carpenter

1
谢谢阿莫斯!无论如何,如果我错了,我很抱歉,据我所知->在此线程的其他答案中不建议在清理/重建之前删除垃圾箱...只要清理>构建在我的情况下是行不通的...只要帮助某人:)
DeeCode 2015年

不用担心-我遇到过很多这样的情况,其中尝试将奇怪的事情组合突然出现而没有明显的原因。;-)
Amos M. Carpenter

4

类似的事情发生在我身上几次,我知道解决此问题的唯一方法是删除元数据文件夹。幸运的是,我找到了另一种方法。

尝试转到项目属性> Java构建路径>订单和导出选项卡>全选(或尝试使用其中的复选框进行播放)。

这将导致完整的项目重建,并且Eclipse可以看到主类。

另外:我注意到当您在工作空间中有许多项目并且其中一些项目配置错误(出现红色感叹号)时,会发生此错误。修复项目构建路径和其他设置(即使该项目与您遇到问题的项目无关)也应该解决问题。


4

我的Main class找不到或加载问题是由一个有趣的原因引起的。

在我们的项目中,我们使用的Maven是构建工具,我使用main class extends了一个类,该类在上,class path但其范围为test,而该类main class不在测试包中。

如果您的主要班级extends是班级,请首先尝试main class通过卸下extends零件来运行您的班级。如果它运行,你至少会明白,这个问题是不是因为run configurationeclipse但是类,你的main class extends


4

对我而言,此错误开始出现的原因是由于classpath超出了Windows的限制。然后,我发现了选项“使用临时JAR指定类路径(以避免类路径长度限制)”。选择此选项可以解决我的问题。该选项位于“运行/调试配置”的“类路径”选项卡中,请参见下图。

在此处输入图片说明


3

当您在工作区路径中有特殊字符时,也会引起此问题。我的工作区放在我的个人文件夹中,它的名称是希腊文,因此无法正常工作。我更改了工作空间,现在其路径中仅包含英文字符,并且该项目的构建没有任何问题。


3

如果您使用的是eclipse,则以下步骤将解决您的问题:

转到运行->运行配置->主类搜索->手动找到您的班级->应用->运行


3

我有这个错误。这是因为我有 static void main(String[] args)
代替 public static void main(String[] args)

我花了近一个小时试图弄清楚。

注意:唯一的区别是我没有声明mainpublic


3

如果您的代码很好,并且知道自己遇到了Eclipse问题,则可以解决此问题。

您可以简单地删除$ yourproject / .classpath,$ yourproject / .project和$ yourworkspace / .metadata。有人提到了这个选项。它会炸毁整个工作区。代替:

  1. 从项目中删除.classpath和.project
  2. 在eclipse中删除您的项目。不要检查磁盘上的删除项目内容。
  3. 现在,在文件浏览器中,进入$ yourworkspace / .metadata。
  4. 搜索$ yourprojectname
  5. 删除找到的所有内容。删除.metadata目录中的任何内容都应该是安全的。
  6. 在eclipse中:文件>导入>常规>来自文件夹或存档的项目> $ yourproject>完成
  7. 右键单击您的项目>属性> Java构建路径>源选项卡
  8. 选择所有源文件夹,将其删除。
  9. 添加文件夹,选择src(无论您叫什么src文件夹)并添加它
  10. 转到库标签
  11. 在此处将所有jar添加到您的构建路径。现在,您的项目应该没有更多的错误了。
  12. 像往常一样运行项目。

我用另一个项目中.classpath.project文件覆盖了和文件,它起作用了……是巧合还是类路径确实很重要?
AmarthGûl19年

可能是巧合,因为这些文件特定于您的项目。您可能在不知不觉中通过引入错误使eclipse重新生成了这些文件。打开文件并阅读,您将了解它们的作用。Classpath包含libs和src文件夹目录,以及.project存储插件和项目方面的东西
Brent Sandstrom,

3

如果您已经导入到jre中,这可能会导致jdk库

这发生在我身上,因此请检查已安装的jre罐子

在eclipse中,单击Windows>首选项> Java>已安装的Jres>单击Jre,然后在查看jar列表中进行编辑,确保没有jdk或已损坏, 在此处输入图片说明


2

我遇到了同样的问题,但是在我的情况下,这是由于缺少(空)源文件夹(它存在于原始项目中,而不存在于GIT存储库中,因为它是空的)引起的。

创建丢失的文件夹后,一切正常。


2

在移动了一些资源之后,我也收到了此错误。查看错误日志,我发现Eclipse无法构建,因为它无法删除文件/文件夹。尝试手动删除“ bin”(或任何您需要的名称)文件夹。

至少对我来说这是个窍门。


是的 在将项目移至git之后。发生问题。我尝试了这一点,并且还需要“关闭项目”和“打开项目”来解决问题。
Yeung 2013年

2

我今天遇到了这个错误,因为我建立了一个hello world程序,然后将新程序剪切并粘贴到同一文件中。为了解决在最后一次调用时找不到hello world的问题,我单击运行->运行配置,然后在主类下单击搜索,它找到了我的新类名称,并在粘贴的文本中将其替换为正确的新名称。 。我知道这是一个新手问题,但也很容易解决。我希望这可以帮助别人!道格拉斯


2

我在使用正确的.classpath文件时遇到了同样的问题,很快发现实际上不是在.classpath文件中(在解决此问题后,我用原始的.classpath文件替换了可用的.classpath文件,该项目仍然有效,这意味着。类路径文件不是这种情况)

由于这是一个Maven项目,所以我要做的是:

  1. MVN Eclipse:干净
  2. 删除eclipse项目
  3. 导入项目
  4. 做完了

希望能帮助到你!


2

通常会发生这种情况,因为Eclipse会清除.class文件,但不要再次构建它们。检查bin文件夹,它应该为空。然后,您应该检查是否还有其他原因导致构建ti失败。您可能在classpath中添加了一些jar,而Eclipse可能找不到。


2

只需转到“程序包资源管理器”并按F5,或者对于某些笔记本电脑按fn + F5。原因是eclipse认为文件在某个地方,但是文件实际上在其他地方。通过刷新,可以将它们放在同一页面上。不用担心,您不会丢失任何东西,但是如果要格外小心,只需将文件从Java项目文件夹中备份到安全的地方。


这对我有用。升级到较新版本的Eclipse后,我遇到了问题。这是一个gradle项目,并且gradle clean eclipse无法解决问题。简单刷新即可。
dugttle

2

这些是简单的步骤,可以帮助我解决此问题。

  1. 关闭日食
  2. 删除工作空间中的“ .metadata”文件夹。(可能是隐藏文件夹)
  3. 打开Eclipse(它将在您的工作区中自动创建“ .metadata”文件夹)
  4. 尝试运行该程序。

这将取消我的项目与工作区的绑定。您将不得不再次导入所有项目!
穆罕默德·盖尔巴纳

我同意@MuhammadGelbana的观点,我删除了.metadata并炸毁了我的工作区。尝试此解决方案时要非常小心。
TYMG

2

要解决此错误,请执行以下步骤:

步骤1:打开.project文件。

第2步:检查两个标签...

    a) <buildSpec>

    b) <natures>

步骤3:如果上述标记不包含任何内容,那么肯定会发生上述错误。

步骤4:将以下内容添加到每个标签中,以解决上述错误。

对于<buildSpec>

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

对于<natures>

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

步骤5:按Ctrl + s保存文件。

步骤6:为安全起见,只需关闭项目一次,然后重新打开即可。

步骤7:就这样。您已准备好摇滚!!!

如果解决方案有帮助,请在评论中提及。

谢谢。


2

检查工作区错误日志(Windows->显示视图->错误日志)。如果看到任何导入的jar损坏,请删除相应的存储库文件夹,然后再次重新导入。


2

两种解决方案均存在相同的出口。

(1)转到运行配置:-运行->运行配置在“类路径”选项卡中:

选择Advanced Add,Eclipse通常在其中将项目的* .class放在bin中。因此,我为项目添加了bin目录。

(2)如果第一个解决方案不起作用,则意味着您指向项目的jar正在使用本地Maven存储库的路径,而该路径尚未更新到您的项目,因此最好从该本地Maven存储库中检查该jar并复制它即可将其粘贴到新项目中,或者仅从任何站点下载并将其配置到您的构建路径中。

希望对您有所帮助。


1

我有同样的问题。花了几个小时,最后将我的工作区改回了本地文件夹,现在一切正常。也许可以为其他人节省一些时间。乔恩


1

无论我将JAVA_HOME设置为什么,我首先遇到Windows 8拒绝更新路径的问题后,我都遇到了这个问题-java -version报告了最后一个JDK,而不是我存储在JAVA_HOME中的JDK。我终于通过将'%JAVA_HOME%/ bin;'投入了工作。在路径环境变量的开头而不是结尾。然后,我启动了Eclipse,但在此之前一切正常,突然间找不到我的主类。我所做的修复工作进入了项目属性,从“库”选项卡中删除了现有的JRE库,通过选择“添加库”按钮添加了新的JRE,然后按照提示将JRE 7安装为我的默认JRE。现在一切恢复正常。


1

在我的情况下,我找到了其他解决方案来解决此问题:Eclipse->Preferences->Java->Installed JRE然后按搜索按钮。在Linux中选择文件夹/usr然后Eclipse找到所有JVM。

选择另一个最新的JVM。我的情况已经解决了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.