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

使用java -jar启动Spring Boot应用失败(非托管类型)求助

解决Spring Boot应用java -jar启动失败但mvnw spring-boot:run正常的问题

遇到这种情况别着急,咱们一步步来排查解决:

1. 先确认Jar包是不是正确构建的

有时候直接用mvn package打包,可能没生成包含所有依赖的可执行Jar。你得用Spring Boot专属的打包命令重新构建试试:

mvnw clean package spring-boot:repackage

这个命令会帮你把所有依赖打包进去,同时配置好正确的启动入口。

2. 检查pom.xml里的启动类配置

打开项目的pom.xml,看看Spring Boot插件有没有指定主启动类。要是没指定,java -jar可能找不到启动入口。配置大概是这样的:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 把这里换成你自己的主启动类全路径哦 -->
                <mainClass>com.intranet.si.intranetbusinessrest.IntranetBusinessRestApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

加上配置后重新打包,再用java -jar试试。

3. 一定要看java -jar的报错信息

你只说了启动失败,但没给具体错误。执行java -jar的时候一定要盯着控制台的输出,比如运行这个命令:

java -jar target/intranet-business-rest-0.0.1-SNAPSHOT.jar

常见的错误无非这几种:

  • 缺少依赖包:说明打包时没把依赖包含进去
  • 启动类找不到:主类配置错了或者没配置
  • 配置文件丢了:比如application.properties不在Jar的正确位置
  • JDK版本不兼容:比如项目用JDK17开发,你却用JDK8来运行

4. 看看Jar包内容全不全

可以用解压工具打开生成的Jar包,检查几个关键地方:

  • BOOT-INF/lib文件夹下有没有所有项目依赖的Jar包
  • BOOT-INF/classes里有没有你项目编译后的class文件,特别是主启动类
  • META-INF/MANIFEST.MF文件里有没有Main-Class和Start-Class这两个配置,正常应该是这样的:
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.intranet.si.intranetbusinessrest.IntranetBusinessRestApplication

要是这俩配置缺失,java -jar肯定启动不了。

5. 留意Maven打包时的警告

你之前运行mvnw spring-boot:run的时候有警告,提到dependencyManagement的问题,这可能是依赖版本冲突或者配置不对。打包时仔细看日志,有没有报错或者警告说某个依赖没正确引入,这也会导致Jar包运行时缺东西。


内容的提问来源于stack exchange,提问作者EL OUFIR Hatim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:56:55