【问题标题】:Eclipse "Error: Could not find or load main class"Eclipse“错误:无法找到或加载主类”
【发布时间】:2012-06-29 10:52:06
【问题描述】:

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

它可以在我的笔记本电脑上完全运行,并且可以毫无问题地运行/构建,但在我的桌面上它没有 Eclipse 给出错误

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

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

Project>Build Project

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

我的 .classpath 文件中确实有 Jar 文件 (last.fm-bindings-0.1.1.jar),该文件位于 C:\Users\Chris\Downloads 中 我笔记本电脑上的文件夹,因此它没有包含在我最近带入项目文件夹并提交的 git 树中,但我不确定我是否做得对。 这是否也会导致问题,但其中没有主要论点。

我现在无法锻炼,我需要检查/更改什么。

【问题讨论】:

  • 您是否尝试过 Project>Clean and Project>Build Project?
  • 多次,好像没用
  • 系统环境类路径包括 .我还需要改变哪些地方,具体要做什么?
  • 在我的情况下,我运行的是java .\bin\selenium-server-standalone-3.9.1.jar,而它应该是java -jar .\bin\selenium-server-standalone-3.9.1.jar

标签: java eclipse git jar classpath


【解决方案1】:

在您的类路径中,您使用的是绝对路径,但您已将项目移动到一台具有不同文件结构的新机器上。

因此,您应该在您的类路径中(如果您要将 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"/>

【讨论】:

  • 如何改变这一点?
  • 我没有外部罐子,但我面临着类似的问题。 stackoverflow.com/questions/49738153/…
  • @Aequitas 执行“运行”->“运行方式”->“Java 应用程序”。一次,它会自动设置类路径。请参阅 Blamkin86 的回答。类路径设置可以在“运行”->“运行配置...”下找到。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我也收到了这个错误,只是在移动了一些资源之后。检查错误日志,我看到 Eclipse 无法构建,因为它无法删除文件/文件夹。尝试手动删除“bin”(或为您调用的任何内容)文件夹。

    【讨论】:

    • 是的。在我将项目移动到 git 之后。出现问题。我试试这个,我还需要“关闭项目”和“打开项目”才能做到这一点。
    【解决方案4】:

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

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

    注意:唯一的区别是我没有将main声明为public

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。花了几个小时,终于将我的工作区改回本地文件夹,现在一切正常。

      【讨论】:

        【解决方案6】:

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

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

        肯定还有别的办法,但我做的是:

        • 关闭 Eclipse
        • 编辑 ."project" 文件以添加“buildSpec”部分
        • 重启eclipse

        一个适当的最小 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>
        

        【讨论】:

        • 这为我解决了问题。更改.project文件不需要关闭Eclipse,直接关闭项目即可。
        • 另一方面,我只是关闭了 Eclipse(但没有编辑 .project 文件。重新打开 Eclipse,它工作:错误消失了。
        【解决方案7】:

        当您的工作区路径中有特殊字符时也会导致此问题。我的个人文件夹中有我的工作区,它的名称是希腊语,所以它不起作用。我更改了我的工作区,现在它的路径中只包含英文字符,现在项目构建没有任何问题。

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            我对正确的 .classpath 文件也有同样的问题,但很快发现它实际上不是 .classpath 文件(在我解决了这个问题后,我用原始文件替换了可行的 .classpath 文件,该项目仍然有效,这表示 .classpath 文件不是这种情况)

            由于是 Maven 项目,我所做的只是:

            1. mvn eclipse:clean
            2. 删除eclipse项目
            3. 导入项目
            4. 完成

            【讨论】:

              【解决方案10】:

              我假设您已将项目导入到桌面 Eclipse 安装中?如果是这种情况,您只需选择 Project > Clean。然后重建你的项目。对我来说就像一个魅力。

              【讨论】:

                【解决方案11】:

                大多数情况下会发生这种情况,因为 Eclipse 会清理 .class 文件,但不会再次构建它们。检查bin 文件夹,它应该是空的。然后你应该检查一下,是否还有其他导致构建失败的原因。您可能在类路径中添加了一些 jar,Eclipse 可能无法找到这些 jar。

                【讨论】:

                  【解决方案12】:

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

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

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

                  如果您随后移动 java 类(手动,或者然而),然后再次选择

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

                  从新位置,Eclipse 将运行原来存储的配置,尝试从它原来的位置调用这个类,这会导致这个错误。


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

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

                  Eclipse 会为被移动的类写一个新的配置,错误就会消失。

                  【讨论】:

                  • 谢谢..!!这个对我有用。当我更改项目名称时,问题就开始了。
                  • +1 public static void main(String[] args) 吸引了我。我不小心有错误的签名(Main 而不是main)。因此,确保签名正确非常重要。 :)
                  • 我们如何“删除对类的所有引用”?
                  • 工作就像一个魅力。我的问题是我创建了一个 build.gradle 和 settings.gradle,它们正在更改与项目关联的默认名称。删除引用(运行方式 -> 运行配置 -> 删除与项目关联的所有配置)
                  • "删除对类的所有引用" - 我应该删除所有运行配置吗?
                  【解决方案13】:

                  尝试在更改配置或重新安装之前重命名软件包。
                  我得到了这个奇怪的错误,除了几行代码之外没有改变任何东西。重建不起作用,即使 bin 文件夹为空,Eclipse 也不会重新创建该类。将包从 test 重命名为 test1 后,Eclipse 开始重建,一切都很好。

                  【讨论】:

                    【解决方案14】:

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

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

                    【讨论】:

                    • 对我来说同样的事情 - 也不知道为什么会发生这种情况。
                    • 在eclipse中,右击Run As..Maven clean,然后Run As..Maven install为我做了。当我将 eclipse java 项目更改为 eclipse maven 项目时,问题就开始了。 +1 指向正确的方向。
                    • -U,--update-snapshots 强制检查远程存储库上丢失的版本和更新的快照
                    • 这对我来说也是一种魅力,经过几天的努力才能让它发挥作用
                    【解决方案15】:

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

                    尝试进入项目 properties > Java Build Path > Order And Export 选项卡 > 全选(或尝试使用那里的复选框)。

                    这应该会导致完整的项目重建和 Eclipse 看到主类。

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

                    【讨论】:

                    • “红色感叹号”出现在我的其他项目之一中,关闭该项目并运行 desigered 项目对我没有帮助。
                    【解决方案16】:

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

                    【讨论】:

                      【解决方案17】:

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

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

                      【讨论】:

                        【解决方案18】:

                        tl;博士: 清理您的整个构建路径以及您手动添加到其中的所有内容。这包括其他来源、项目、库。

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

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

                        在我的情况下,它应该是“无法将 AutoHotkey.dll 添加到构建路径”之类的,因为这是导致编译器失败的原因。


                        如果还是不行,看看Eclipse的内置ErrorLog

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

                        【讨论】:

                        • 项目属性 -> 删除以前丢失的 jar 有助于修复它。
                        【解决方案19】:

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

                        【讨论】:

                        • 这对我有用。升级到较新版本的 Eclipse 后,我遇到了这个问题。这是一个gradle项目,gradle clean eclipse并没有解决问题。一个简单的刷新就完成了。
                        【解决方案20】:

                        在我的项目中创建新包(“表”)后,我遇到了同样的问题。

                        我去了Window -&gt; Show View -&gt; General -&gt; Error Log,我读到了错误:

                        JavaBuilder handling ImageBuilderInternalException while building: PizzaService
                        
                        org.eclipse.core.internal.resources.ResourceException: Resource '/PizzaService/bin/tables' already exists.
                        

                        事实证明,我在另一个源文件夹中有一个与这个新包同名的文本文件。所以我将文本文件名从“Tables”更改为“Tabless”,我可以再次运行我的项目。

                        希望这会有所帮助。

                        【讨论】:

                          【解决方案21】:

                          我遇到了同样的错误,错误出现在一个导入的外部 jar 中。删除该 jar 项目后对我有用。

                          【讨论】:

                            【解决方案22】:

                            当我将已安装的 JRE 更改为 JDK7 而不是 JRE7 时,发生在我身上。一切都编译了,但我无法从 Eclipse "eclipse-error-could-not-find-or-load-main-class" 运行任何东西

                            修复;回到以前的 JRE7。

                            【讨论】:

                              【解决方案23】:

                              以下对我有用...

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

                              【讨论】:

                              • 欢迎来到 SO,DeeCod。其他答案中已经建议删除 bin 文件夹并执行“项目>清理”和构建。与其发布“我也是”作为答案,我建议您获得足够的声誉(您只需要 50 个)来发布 cmets 并在评论中确认特定方法对您有效。
                              • 谢谢阿莫斯!无论如何,如果我错了,我很抱歉,据我所知->在此线程的其他答案中不建议在清理/重建之前删除垃圾箱...只是清理>构建在我的场景中不起作用...只要这个帮助某人:)
                              • 不用担心 - 我遇到过很多这样的场景,尝试组合奇怪的东西突然无缘无故地起作用。 ;-)
                              【解决方案24】:

                              使用 Ctrl+Shift+R (Windows) 重命名类,它会在所引用的任何地方更改类的名称,然后执行相反的过程。在我的情况下,它是由环境中多个项目中的相同类名引起的,Eclipse 很难理解哪个是哪个。

                              【讨论】:

                                【解决方案25】:

                                按照对我有用的步骤:

                                1. 从 Eclipse(构建路径)中删除配置构建路径
                                2. 刷新
                                3. 添加configure Build Path->Source->add Folder->check src ok.

                                【讨论】:

                                  【解决方案26】:

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

                                  转到运行 -> 运行配置 -> 主类搜索 -> 手动定位您的类 -> 应用 -> 运行

                                  【讨论】:

                                    【解决方案27】:

                                    这些是简单的步骤,帮助我解决了这个问题。

                                    1. 关闭eclipse
                                    2. 删除工作区中的“.metadata”文件夹。 (可能是隐藏文件夹)
                                    3. 打开eclipse(它会自动在你的工作区创建“.metadata”文件夹)
                                    4. 尝试运行程序。

                                    【讨论】:

                                    • 这会将我的项目与工作区解除绑定。您必须再次导入所有项目!
                                    • 我同意@MuhammadGelbana,我删除了 .metadata,它搞砸了我的工作空间。尝试此解决方案时要非常小心。
                                    【解决方案28】:

                                    Eclipse-Mars 也有同样的问题。我有一个工作项目,然后把它放在我的 Git 存储库中。这破坏了执行(我猜是因为实际的 Java 文件已移动到 git 位置并且不再存在于我的工作区中)。我做了一个 Maven>更新,它现在可以工作了。

                                    【讨论】:

                                      【解决方案29】:

                                      当我从 Eclipse 项目中删除一个“.jar”文件时,我遇到了这个问题,方法是右键单击它并点击“删除”(而不是从“构建路径”)。

                                      为了解决,我尝试了以下步骤:

                                      1- 右键单击​​项目

                                      2- 构建路径 --> 配置构建路径

                                      3- 库

                                      4- 从那里删除 jar 文件(我看到它旁边有一个红色标记)。

                                      【讨论】:

                                        【解决方案30】:

                                        实际上我找到了这个问题的真正根本原因,通过手动逐个添加每个.jar文件,因为以下answer within the same thread建议您这样做。

                                        原因:
                                        你知道我们是人类,我们真的是懒惰的生物,这就是为什么我们可以选择“全选”以及执行该操作的快捷键。 因此,当我必须为 PDF 生成所需的应用程序添加大约 30 多个 jar 文件时,我确实采用了这种方式,

                                        右键单击项目 -> 属性 -> Java构建路径

                                        • 在其中选择“库”选项卡,然后添加 JAR...”,浏览目录树和(我的 JAR 和 licence.txt 文件位于项目“lib”文件夹中) “lib”文件夹,我选择了所有文件并添加。你能猜出是什么错误吗?它已经成功添加了“lib”文件夹中的所有文件. 但是 eclipse 一直试图以这种方式将您可能添加的任何文本文件作为 JAR 文件。所以它无法建立链接。就是这种情况。

                                        所以你有两个选择:

                                        1. 在任何你想要的地方只选择 JAR 文件,不要懒于添加文本和其他类型的文件。 或者,

                                        2. 选择特定文件夹中您要从中添加 JAR 的所有文件,然后一一删除,即非 JAR 文件。

                                        注意:
                                        如果您在尝试添加“库”时以这种方式将任何非 JAR 文件添加到项目中,它将显示如下内容:

                                        并继续尝试编译,最后会出现以下错误:

                                        错误:无法找到或加载主类 er.waterapp.some.MainFileGivenByConfiguration

                                        • MainFileGivenByConfigaration 可以是您可能从 Configuration 中选择的任何类作为应用程序的起点。

                                        【讨论】:

                                          猜你喜欢
                                          • 2014-06-26
                                          • 1970-01-01
                                          • 2015-02-25
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2013-04-26
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多