Spring Boot 程序找不到主类

Posted

技术标签:

【中文标题】Spring Boot 程序找不到主类【英文标题】:Spring Boot Program cannot find main class 【发布时间】: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吗? 【参考方案1】:

我的解决方案是:

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

【讨论】:

【参考方案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 应用程序 > 打开您的配置, 按照步骤,

    在 Spring boot 选项卡中,检查您的 Main 类和配置文件。 然后转到类路径选项卡,在底部您会看到两个复选框,一个是“排除测试代码”(如果您不想运行测试类,请选中此选项)和另一个“使用临时 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


解决步骤:


    运行项目

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

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

    更新项目

    运行成功

【讨论】:

【参考方案15】:

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

apply plugin: 'application'

mainClassName = "com.example.demo.DemoApplication"

【讨论】:

【参考方案16】:

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

    文件 -> 使缓存无效并重新启动 文件 -> 新建 -> 来自现有源的项目 只选择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

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

    参考库 Maven 库

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

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

中做错了
    注释类 pom 条目 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 元素:

以上是关于Spring Boot 程序找不到主类的主要内容,如果未能解决你的问题,请参考以下文章

java 主启动类找不到

Spring Boot gradle“找不到或加载主类”

SpringBoot中使用 Redisson 版本冲突导致的类找不到

Spring Boot找不到主类多模块

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

spring boot 启动报错:找不到或无法加载主类