【问题标题】:Spring Boot Program cannot find main classSpring Boot 程序找不到主类
【发布时间】:2015-04-11 15:12:00
【问题描述】:

我有一个在 Eclipse 中作为 Spring Boot 应用程序运行的程序。该程序运行良好。然后我做了以下事情:

右击项目 -> 运行方式 -> Maven 测试。

这是偶然的。然后,当我再次尝试将该程序作为 Spring Boot 应用程序运行时,它在下面抛出了以下错误。

Error: Could not find or load main class com.bt.collab.alu.api.webapp.Application

如何将应用程序指向我的主类? 谢谢

【问题讨论】:

  • com.bt.collab.alu.api.webapp.Application 是正确的类吗?
  • 这是我的主要是的类
  • 什么春季启动版本?
  • @chris,你能分享你的pom.xml吗?

标签: java eclipse spring-mvc spring-boot


【解决方案1】:

我的解决方案是:

  1. 启动仪表板,右键单击您的实例。
  2. 打开配置
  3. 标签弹簧引导
  4. 主要类型,缺少应用程序文件的路径...

【讨论】:

    【解决方案2】:

    (Eclipse) 更新 maven 项目对我不起作用。我要做的是进入运行配置,并在“主”选项卡的“项目”字段中,写下整个包名 com.bla.blabla.MyMainClass (而不仅仅是主类名)。 发生错误是因为我有几个同名的项目,但在不同的包中。

    【讨论】:

      【解决方案3】:

      这里有很好的答案,但也许这个也可以帮助某人。

      对我来说,它发生在我删除 .idea(使用 IntelliJ)并重新导入项目之后。

      然后这个问题开始了,我尝试运行 mvn compile(只是通过 IDE Maven 工具栏),一旦我修复了一些编译错误,问题就消失了

      【讨论】:

        【解决方案4】:

        我在“Spring Tool Suite”软件中遇到了同样的错误。

        就我而言,我安装了 Java 8,并创建了一个 Java 11 项目。当我运行该项目时,我遇到了同样的错误,比如“找不到主类”。

        然后我用 Java 8 创建了一个项目,问题就解决了。

        【讨论】:

          【解决方案5】:

          start-class 对我不起作用,我通过将build plugins 添加到pom.xml 来修复它,并且executions 是必需的。

          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                      <executions>
                          <execution>
                              <goals>
                                  <goal>repackage</goal>
                              </goals>
                          </execution>
                      </executions>
                  </plugin>
              </plugins>
          </build>
          

          【讨论】:

            【解决方案6】:

            我尝试了上述所有解决方案,但没有为我工作。 终于能够通过一个简单的修复来解决它。

            在 STS 上, 运行配置 > 打开您的 Spring Boot 应用程序 > 打开您的配置, 按照步骤,

            1. 在 Spring boot 选项卡中,检查您的 Main 类和配置文件。
            2. 然后转到类路径选项卡,在底部您会看到两个复选框,一个是“排除测试代码”(如果您不想运行测试类,请选中此选项)和另一个“使用临时 Jar 文件指定类路径” (这是必要的)。

            保存配置并运行。

            【讨论】:

              【解决方案7】:

              我遇到了同样的错误,虽然我使用的是 gradle build。将 IDE 构建/运行操作委托给 Gradle 解决了我的问题。

              智能: 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle -> Runner

              【讨论】:

                【解决方案8】:

                智能

                • 关闭 Intellij
                • 删除所有与 Intellij 相关的文件(.idea 文件夹和 *.iml 文件)
                • 在 Intellij 中像第一次一样打开项目(使用 open recent 不起作用,id 需要通过 file -> open 完成)

                【讨论】:

                  【解决方案9】:

                  即使我遇到了同样的问题,后来我发现它的发生是因为 maven 构建操作在我的环境中没有正确发生。也请检查您的情况。

                  【讨论】:

                    【解决方案10】:

                    在我的项目中添加 spring 安全依赖项时,我遇到了类似的问题, 然后我删除了我的目标文件夹并再次使用 maven update 。 它对我有用。

                    【讨论】:

                      【解决方案11】:

                      我也遇到了同样的问题。我已经删除了目标文件夹并运行了maven install,它工作了。

                      【讨论】:

                        【解决方案12】:

                        我遇到了同样的问题,只是从本地存储库中删除 .m2 文件夹 希望它会起作用。

                        【讨论】:

                          【解决方案13】:

                          我知道这是很晚的答案。但它可能仍然对一些新学习者有所帮助。 以下示例仅适用于带有 NETBEANS 的 springboot。 我必须执行以下步骤:

                          第 1 步。关注@Mariuszs 的回答。

                          第 2 步。 右键单击​​项目 -> 属性 -> 运行。 确保 Main Class 字段具有正确的起始类,否则单击浏览并从可用类中选择。

                          第 3 步。单击确定-> 确定。仅此而已。谢谢。

                          【讨论】:

                            【解决方案14】:

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

                            项目:Spring Boot 工具:STS


                            解决步骤:


                            1. 运行项目

                            1. 在问题选项卡中查看,它将显示损坏的错误

                            1. 删除 .m2 文件夹中的特定 jar(损坏的 jar)

                            1. 更新项目

                            1. 运行成功

                            【讨论】:

                              【解决方案15】:

                              如果有人使用 Gradle 进行构建,则修复方法是在 build.gradle 文件中添加以下行

                              apply plugin: 'application'

                              mainClassName = "com.example.demo.DemoApplication"

                              【讨论】:

                                【解决方案16】:

                                遇到了同样的问题,可以通过下面列出的步骤解决它:

                                1. 文件 -> 使缓存无效并重新启动
                                2. 文件 -> 新建 -> 来自现有源的项目
                                3. 只选择pom.xml文件(不是整个项目目录)来加载项目。项目将自动设置。

                                【讨论】:

                                  【解决方案17】:

                                  我也得到了这个错误,没有任何线索。我可以在 Target 文件夹中看到类和罐子。我后来安装了 Maven 3.5,通过 Maven 的 conf/settings.xml 将我的本地仓库从 C 盘切换到其他驱动器。在那之后它工作得很好。我认为在 C 盘中有本地仓库是主要问题。即使 repo 具有完全访问权限。

                                  【讨论】:

                                    【解决方案18】:

                                    在我的情况下,以下帮助:

                                    在 pom 中添加了以下部分

                                      <plugins>
                                        <plugin>
                                                <groupId>org.springframework.boot</groupId>
                                                <artifactId>spring-boot-maven-plugin</artifactId>
                                                <configuration>
                                                    <executable>true</executable>
                                                </configuration>
                                        </plugin>
                                      </plugins>
                                    

                                    使用 maven3 运行它并且成功了

                                    【讨论】:

                                      【解决方案19】:

                                      这发生在我更新 pom 之后(添加了一些依赖项)。

                                      以下步骤帮助我避免了这个错误

                                      right click on the project > maven > update project
                                      

                                      【讨论】:

                                      • 这对我有帮助。谢谢。
                                      • 我又遇到了同样的问题,这次我没有更新 pom。我只是选择了一个旧项目并尝试运行它,但是找不到主类错误。仍然'右键单击项目> Maven>更新项目'作品
                                      【解决方案20】:

                                      我是 Spring Boot 新手,并且使用 STS 和 maven 构建。我做了上面提到的所有事情,但对我不起作用。我注意到 STS 的问题窗口中有两个问题。路径上缺少 jar 文件 (C:\Users\UserName.m2\repository\com\jayway\jsonpath\json-path\2.2.0)。我确实遵循了这种方法,但并未强烈建议该方法,但对我有用。

                                      1) 我从路径位置删除了 .m2 文件夹

                                      2) 重启 STS

                                      3) 右键单击​​项目文件夹 -> maven -> 更新项目 -> 选中“强制更新快照/版本” -> 点击确定。

                                      Maven更新了它的依赖,问题就解决了。

                                      【讨论】:

                                        【解决方案21】:

                                        从 .m2 中删除旧 jars 并更新 maven 项目应该是主要步骤。 在大多数情况下,它可以解决问题。这个问题的原因主要是旧 jar 损坏

                                        【讨论】:

                                          【解决方案22】:

                                          我使用了 spring 1.5.3.RELEASE 版本并给出了 pom 依赖项,例如

                                              <parent>
                                                  <groupId>org.springframework.boot</groupId>
                                                  <artifactId>spring-boot-starter-parent</artifactId>
                                                  <version>1.5.3.RELEASE</version>
                                              </parent> 
                                          
                                             <dependencies>
                                                  <dependency>
                                                      <groupId>org.springframework.boot</groupId>
                                                      <artifactId>spring-boot-starter-web</artifactId>
                                                  </dependency>
                                             </dependencies>
                                          

                                          我的主要课程是

                                          @SpringBootApplication
                                          public class SpringAppStarter {
                                          
                                          
                                              public static void main(String[] args) {
                                          
                                                  SpringApplication.run(SpringAppStarter.class, args);
                                              }
                                          
                                          }
                                          

                                          但是在执行主类时我仍然得到:

                                          无法使用我的类名找到或加载主类。

                                          我可以看到该类在类路径中可用,并且我正在使用 STS IDE。

                                          我没有得到问题的原因,然后我尝试通过 maven 手动构建

                                          mvn clean install
                                          

                                          问题仍然存在,然后我意识到我的项目有两个库

                                          1. 参考库
                                          2. Maven 库

                                          我做了什么:
                                          我创建了另一个 mavenRepo 文件夹并再次构建它并刷新我的项目。之后它工作了,我看到 Maven 库已从项目类路径中删除。

                                          问题是在执行时它获得了多个版本,因此它无法找到合适的类来执行我的应用程序。 此页面中列出的其他解决方案也可以解决该问题,但如果您在

                                          中做错了
                                          1. 注释类
                                          2. pom 条目
                                          3. jar 版本等

                                          如果有人遇到这个问题,希望这可以解决问题

                                          【讨论】:

                                            【解决方案23】:

                                            如果你的项目包装类型战争你无法启动。我正在使用具有此配置的 maven 程序集插件;

                                            <build>
                                                <plugins>
                                                    <plugin>
                                                        <artifactId>maven-assembly-plugin</artifactId>
                                                        <version>3.0.0</version><!--$NO-MVN-MAN-VER$ -->
                                                        <configuration>
                                                            <descriptors>
                                                                <descriptor>assembly.xml</descriptor>
                                                            </descriptors>
                                                            <descriptorRefs>
                                                                <descriptorRef>jar-with-dependencies</descriptorRef>
                                                            </descriptorRefs>
                                                            <archive>
                                                                <manifest>
                                                                    <mainClass>com.ttech.VideoUploaderApplication</mainClass>
                                                                </manifest>
                                                            </archive>
                                                        </configuration>
                                                        <executions>
                                                            <execution>
                                                                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                                                                <phase>package</phase> <!-- bind to the packaging phase -->
                                                                <goals>
                                                                    <goal>single</goal>
                                                                </goals>
                                                            </execution>
                                                        </executions>
                                                    </plugin>
                                                </plugins>
                                            </build>
                                            

                                            我的包装是战争,我找不到主类异常,但我将包装更改为 jar 它可以工作;

                                            <groupId>com.ttect</groupId>
                                            <artifactId>VideoUploadListener</artifactId>
                                            <version>1.0.0</version>
                                            <packaging>**jar**</packaging>
                                            

                                            【讨论】:

                                              【解决方案24】:

                                              使用spring-boot:run命令启动spring boot应用:

                                              前提条件: 1.在pom.xml中添加如下属性

                                              <property>    
                                              <start-class>com.package.name.YourApplicationMainClass</start-class>
                                              </property>
                                              

                                              2。构建你的项目

                                              然后用 spring-boot:run 配置 maven 命令。

                                              导航:

                                              右键项目 |运行方式 |运行配置... |使用命令 spring-boot:run 添加新的 Maven 配置

                                              【讨论】:

                                              • 谢谢!该 Maven 配置帮助我测试最终的 Spring Boot 构建应用程序
                                              【解决方案25】:

                                              如果你遇到了

                                              错误:无法在 maven 项目中找到或加载主类

                                              这样做对我有用:
                                              错误原因:这个错误的原因是运行maven项目的jar文件或依赖没有正确安装。

                                              错误解决方法:进入项目文件夹(如:D:\office\OIA-service-app
                                              在电脑地址栏输入命令cmd,然后回车。
                                              在命令提示符中输入命令mvn clean install 确保您有互联网连接。

                                              【讨论】:

                                                【解决方案26】:

                                                我遇到了同样的问题。试试这个:

                                                右键项目 -> Maven -> 更新项目

                                                然后重新运行项目。希望它也对你有用。

                                                【讨论】:

                                                • 这对我也有用。使用“新建项目”>“spring-boot 向导”时的初始(maven)项目配置似乎不完整。 (Windows 10、Eclipse Photon 版本 (4.8.0)、Spring 2.1.1)
                                                • 这对我有用,但这里的main cause 是什么?
                                                • 可能是使用mvn install 和之后mvn clean 删除目标文件夹造成的。
                                                • 这对我有用。将项目与 gitHub 连接后发生此错误
                                                • 在经历了几个小时的痛苦之后,你救了我。谢谢。
                                                【解决方案27】:

                                                如果您使用的是 Spring Boot 并且上述建议不起作用,您可能需要查看 Eclipse 问题视图(在 Window -> Show View -> Problems 中可用)。

                                                例如,如果您的 jar 文件之一损坏,您可能会收到相同的错误(错误:无法找到或加载主类 groupId.Application)。 Eclipse 会抱怨它找不到 Applications 类,即使错误的 jar 是根本原因。

                                                但是,问题视图会为您识别坏 jar。

                                                无论如何,我必须手动转到我的本地 mvn 存储库(在 .m2 中)并手动删除损坏的 jar,然后更新它(右键单击 Package Explorer 中的项目),Maven --> Update Project ... -> 好的(假设选中了正确的项目)。

                                                【讨论】:

                                                • Hibernate 遇到了严重的问题,它引发了各种错误。这个方法对我帮助很大!当我打开问题窗口时,它清楚地指出损坏的 .jar 文件,我只是在 .m2 存储库中删除了该文件。在此之后,我用 Maven 重建了我的项目,现在一切正常。谢谢!
                                                • 您的建议解决了我的问题。我们还可以在 pom 文件位置点击“mvn install”,它会自动处理依赖问题。谢谢。
                                                【解决方案28】:

                                                查看 Eclipse 中的“运行 -> 运行配置...”。你应该删除你错误创建的新的,你应该仍然拥有现有的。

                                                我怀疑它已经为“作为 Maven 测试运行”创建了一个新的运行配置,而您现在总是在启动这个配置。

                                                【讨论】:

                                                • 太棒了!如果您删除其他正在运行的配置,这是一个持久的解决方案。
                                                • 谢谢!就我而言,我正在将我的项目从 Maven 转换为 Gradle。一切似乎都可以工作,直到“运行为> Spring Boot 应用程序”:我得到了Error: could not find or load main class。我删除了 Run as 配置(碰巧有 Maven 依赖项),重新创建它(点击 3 次按钮)......问题就消失了。
                                                【解决方案29】:

                                                主类可在 pom.xml 中配置

                                                <properties>
                                                    <start-class>com.bt.collab.alu.api.webapp.Application</start-class>
                                                </properties>
                                                

                                                【讨论】:

                                                • 主类可以在 pom.xml 的属性部分定义为 start-class 元素:
                                                猜你喜欢
                                                • 2019-05-06
                                                • 2018-01-30
                                                • 2016-01-10
                                                • 2019-05-04
                                                • 2018-11-01
                                                • 2018-05-09
                                                • 2019-04-28
                                                • 2020-07-26
                                                • 2022-01-21
                                                相关资源
                                                最近更新 更多