You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目Gradle转Maven后Maven无法加载主类咨询

排查Spring Boot从Gradle转Maven后找不到主类的问题

这种找不到主类的问题在Gradle转Maven的Spring Boot项目里真的挺常见的,我整理了几个最可能的原因,你可以挨个排查试试:

  • Spring Boot Maven插件配置问题
    Spring Boot项目要打包成可执行Jar,必须依赖spring-boot-maven-plugin来处理主类配置和Fat Jar的构建。如果你的父pom或admin模块的pom里没配置这个插件,或者配置有误,就会出现找不到主类的情况。
    检查是否在pom中添加了正确的插件配置,尤其是repackage目标和主类指定:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>对应你的Spring Boot版本</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.mycompany.dr3.admin.Application</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    如果父pom已经配置了插件,确认admin模块是否正确继承了父pom的配置,没有被意外覆盖。

  • 主类的声明或路径错误
    虽然你说主类已正确声明,但还是仔细核对下细节:

    • 确认Application类的包路径确实是com.mycompany.dr3.admin(注意大小写,Java对包名和类名大小写敏感);
    • 类上是否标注了@SpringBootApplication注解?这个注解是Spring Boot识别主类的关键标识,缺失的话插件可能无法自动检测到主类;
    • 类名是否确实是Application,有没有拼写错误。
  • Jar包结构异常
    转Maven后打包的Jar可能不是标准的Spring Boot可执行Fat Jar,或者类文件没被正确打包进去。你可以用命令jar tf your-admin-jar-file.jar查看Jar内容:

    • 检查是否存在BOOT-INF/classes/com/mycompany/dr3/admin/Application.class文件,如果没有,说明编译后的类文件没被纳入打包范围,可能是Maven的源码目录配置错误(默认是src/main/java,如果你的代码在其他目录,需要在pom中指定<sourceDirectory>);
    • 检查META-INF/MANIFEST.MF文件,里面必须包含Main-Class和Start-Class属性,正确的内容应该类似:
      Main-Class: org.springframework.boot.loader.JarLauncher
      Start-Class: com.mycompany.dr3.admin.Application
      
      这两个属性缺失或值错误都会导致找不到主类。
  • 多模块项目的聚合/依赖配置错误
    如果dr3是多模块项目,检查父pom的<modules>节点是否包含了admin模块,同时admin模块的pom是否正确设置了<parent>指向父pom。如果模块间的依赖或聚合关系配置错误,会导致admin模块的编译、打包过程异常,进而主类无法被正确包含。

  • Maven缓存或残留文件干扰
    之前Gradle构建的残留文件或者Maven本地仓库的缓存可能会影响构建结果。尝试以下操作:

    • 执行mvn clean package,先清理所有编译和打包的残留文件,再重新构建;
    • 删除本地Maven仓库中dr3项目相关的目录(比如~/.m2/repository/com/mycompany/dr3),然后重新执行mvn install拉取依赖并构建。
  • 主类不在Maven编译范围内
    检查admin模块的pom中是否自定义了<sourceDirectory>或<resources>配置,如果主类所在的目录没有被纳入Maven的编译路径,编译后就不会生成对应的.class文件,自然找不到主类。比如如果代码放在非默认目录,需要显式配置:

    <build>
        <sourceDirectory>src/main/custom-java</sourceDirectory>
    </build>
    

内容的提问来源于stack exchange,提问作者Logan Wlv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:16:35