如果在将SpringBoot项目打包成war包后无法正常运行,有以下两种解决方式:
1. 修改WebApplicationType属性
在SpringBoot 2.0.X之后的版本中,默认的WebApplicationType属性是SERVLET,生成的是一个标准的Servlet容器WAR包。但是如果将SpringBoot项目打包成WAR包后在tomcat等其他容器中运行,WAR包就无法被加载。所以我们需要手动修改WebApplicationType属性为NONE,然后再打包成WAR包时就不会被视为Servlet容器应用程序。
修改步骤:
1. 在SpringBoot入口类中新增以下注解,并导入对应的包:
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;
/**
* 新建一个Application的子类
*/
@Configuration
public class ServletInitializer extends SpringBootServletInitializer {
/**
* 重写configure方法,配置SpringBoot启动信息
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
- 修改application.properties(application.yml)文件中的WebApplicationType属性值为NONE:
spring:
main:
web-application-type: none
接下来使用maven命令进行打包:mvn clean package
,会生成一个新的war包,部署到Tomcat上,并成功运行项目。
2. 跳过对JSP的处理
在SpringBoot项目中,如果使用了JSP作为视图层,需要配置内嵌的Tomcat以支持JSP。但是通过SpringBoot打包的war包可能会导致JSP无法正常工作,需要进行一定的配置。
跳过对JSP的处理步骤:
1. 在application.properties(application.yml)文件中新增以下内容以跳过对JSP的处理:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
spring.mvc.view.enabled=false
- 修改依赖的scope
可能存在的问题:在pom.xml文件的dependencies中引入的JSP包,scope为provided。在spring-boot-maven-plugin构建的war包中,这些包是没有被打入war包中的,需要将依赖项的scope设置为compile或runtime,以确保包含在war包中。例如:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
使用以上两种方式,就能解决SpringBoot项目打包成WAR包无法正常运行的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot项目打包war包时无法运行问题的解决方式 - Python技术站