SpringBoot项目打包war包时无法运行问题的解决方式

 更新时间:2022年06月15日 15:51:19   作者:Smile_X  
在开发工程中,使用启动类启动能够正常启动并测试,下面这篇文章主要给大家介绍了关于SpringBoot项目打包war包时无法运行问题的解决方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

现实的情况下遇见过该问题刚好记录一下!

SpringBoot项目打包

首先默认创建的maven springBoot项目进行代码的clean 和 install进行项目打包的时候默认是使用jar 包的形式进行打包的,如果需要进行war 包打包部署的话就需要修改相应的 数据内容了

jar 包 和 tomcat 包

  • jar 包打完之后进行部署的时候使用 java -jar 的启动方式进行启动 可以设置相应的虚拟机参数 部署完成之后 看不得内部的相关文件信息对于文件的安全性比较高。

启动脚本示例:

nohup /opt/jdk8/bin/java -server -Xms4G -Xmx4G -XX:MaxMetaspaceSize=256m -Xmn1G -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled  -jar /opt/api/xx.jar --spring.profiles.active=prod > /opt/logs/xx.out 2>&1 &
  • war 包的话是依赖于类似与tomcat之类的容器进行解析部署的 一般而言都是 以下方式启动

war启动的时候将war包丢到相应tomcat webapps 路径下面就行

cd /tomcat/bin 
chmod -x *.sh
sh catalina.sh run

对于war包来说 可能对于一些变化大的包便于维护 比如前后端 不分离的项目如果临时需要改部分页面以及配置信息可以临时修改而不用全部项目打包升级。

实际问题及解决方式

问题

在实际开发过程中使用的就是springboot项目开发然后并且选择的的打包方式上也是使用了war的模式但是在实际打算提交测试的时候发现war打出来之后在tomcat中运行是存在问题的 就是容器启动了但是相应的服务却没办法使用

解决方法

  • 确认打包方式
<packaging>war</packaging>
  • 不使用内部的tomcat版本等信息进行打包忽略自身tomcat
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 采用外部的tomcat进行依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
  • 启动类(ps: 这里得注意的是 .sources .run 都是自己的启动类名称)
@SpringBootApplication
@MapperScan("com.smile.ssm.dao")
@EnableScheduling
@EnableAsync
public class HisApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(HisApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(HisApplication.class, args);
        System.out.println("******************SSM project start success !!!***********************");
    }
}
  • mvn重新打包测试

  • 如果以上还不行的话依赖pom 中在加一个指定的 tomcat 版本信息

<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.5.70</version>
</dependency>

end

到此这篇关于SpringBoot项目打包war包时无法运行问题解决的文章就介绍到这了,更多相关SpringBoot打包war包无法运行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现加油站支付小程序功能(存款与消费)

    Java实现加油站支付小程序功能(存款与消费)

    本文给大家介绍Java实现加油站支付小程序功能(存款与消费),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-08-08
  • Java显示程序包不存在的三种解决方法总结

    Java显示程序包不存在的三种解决方法总结

    在Java开发中,有时会遇到“程序包javax.servlet不存在”等错误提示,这通常是因为缺少必要的库或依赖项,这篇文章主要给大家介绍了关于Java显示程序包不存在的三种解决方法,需要的朋友可以参考下
    2024-07-07
  • Mybatis Plus批处理操作的实现示例

    Mybatis Plus批处理操作的实现示例

    MyBatis Plus 提供了强大的批处理支持,可以帮助我们高效地处理大规模数据,本文主要介绍了Mybatis Plus批处理操作的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java 8新特性 内建函数式接口详解

    Java 8新特性 内建函数式接口详解

    这篇文章主要介绍了Java 8新特性 内建函数式接口详解的相关资料,这里主要介绍4个基本函数式接口,需要的朋友可以参考下
    2016-12-12
  • Java Date 转 UTC 时间常见方法

    Java Date 转 UTC 时间常见方法

    在Java中处理日期时间转换到UTC是一个常见需求,尤其是在全球化应用中,下面我将详细介绍多种实现方式,并提供一个完整的转换工具示例,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • SpringBoot集成Prometheus实现监控的过程

    SpringBoot集成Prometheus实现监控的过程

    这篇文章主要介绍了SpringBoot集成Prometheus实现监控,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • java日期时间格式化@JsonFormat与@DateTimeFormat的使用

    java日期时间格式化@JsonFormat与@DateTimeFormat的使用

    本文主要介绍了java日期时间格式化@JsonFormat与@DateTimeFormat的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Maven的安装和环境变量配置过程

    Maven的安装和环境变量配置过程

    文章介绍了如何下载、安装和配置Maven,包括环境变量配置和阿里云镜像的可选配置,此外,还展示了如何在IntelliJ IDEA中新建一个Maven项目
    2024-11-11
  • springboot中ApplicationRunner执行顺序问题小结

    springboot中ApplicationRunner执行顺序问题小结

    SpringBoot中ApplicationRunner用于应用启动后执行初始化任务,通过@Order注解可控制多个Runner的执行顺序,数值越小越优先,下面就一起来了解一下
    2025-06-06
  • Spring Boot 通过AOP和自定义注解实现权限控制的方法

    Spring Boot 通过AOP和自定义注解实现权限控制的方法

    这篇文章主要介绍了Spring Boot 通过AOP和自定义注解实现权限控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论