SpringBoot項目打包war包時無法運(yùn)行問題的解決方式
序
現(xiàn)實的情況下遇見過該問題剛好記錄一下!
SpringBoot項目打包
首先默認(rèn)創(chuàng)建的maven springBoot項目進(jìn)行代碼的clean 和 install進(jìn)行項目打包的時候默認(rèn)是使用jar 包的形式進(jìn)行打包的,如果需要進(jìn)行war 包打包部署的話就需要修改相應(yīng)的 數(shù)據(jù)內(nèi)容了
jar 包 和 tomcat 包
- jar 包打完之后進(jìn)行部署的時候使用 java -jar 的啟動方式進(jìn)行啟動 可以設(shè)置相應(yīng)的虛擬機(jī)參數(shù) 部署完成之后 看不得內(nèi)部的相關(guān)文件信息對于文件的安全性比較高。
啟動腳本示例:
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之類的容器進(jìn)行解析部署的 一般而言都是 以下方式啟動
war啟動的時候?qū)ar包丟到相應(yīng)tomcat webapps 路徑下面就行
cd /tomcat/bin chmod -x *.sh sh catalina.sh run
對于war包來說 可能對于一些變化大的包便于維護(hù) 比如前后端 不分離的項目如果臨時需要改部分頁面以及配置信息可以臨時修改而不用全部項目打包升級。
實際問題及解決方式
問題
在實際開發(fā)過程中使用的就是springboot項目開發(fā)然后并且選擇的的打包方式上也是使用了war的模式但是在實際打算提交測試的時候發(fā)現(xiàn)war打出來之后在tomcat中運(yùn)行是存在問題的 就是容器啟動了但是相應(yīng)的服務(wù)卻沒辦法使用
解決方法
- 確認(rèn)打包方式
<packaging>war</packaging>
- 不使用內(nèi)部的tomcat版本等信息進(jìn)行打包忽略自身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進(jìn)行依賴
<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
到此這篇關(guān)于SpringBoot項目打包war包時無法運(yùn)行問題解決的文章就介紹到這了,更多相關(guān)SpringBoot打包war包無法運(yùn)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot文件上傳控制及Java 獲取和判斷文件頭信息
這篇文章主要介紹了SpringBoot文件上傳控制的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-12-12mall整合SpringSecurity及JWT認(rèn)證授權(quán)實戰(zhàn)下
這篇文章主要為大家介紹了mall整合SpringSecurity及JWT認(rèn)證授權(quán)實戰(zhàn)第二篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06詳解Spring boot上配置與使用mybatis plus
這篇文章主要介紹了詳解Spring boot上配置與使用mybatis plus,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例
這篇文章主要介紹了在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12MyBatis?多表聯(lián)合查詢及優(yōu)化方法
大家都知道Hibernate 是全自動的數(shù)據(jù)庫持久層框架,它可以通過實體來映射數(shù)據(jù)庫,通過設(shè)置一對多、多對一、一對一、多對多的關(guān)聯(lián)來實現(xiàn)聯(lián)合查詢,接下來通過本文給大家介紹MyBatis?多表聯(lián)合查詢及優(yōu)化,需要的朋友可以參考下2022-08-08關(guān)于@GetMapping和@GetMapping(value=““)的區(qū)別
這篇文章主要介紹了關(guān)于@GetMapping和@GetMapping(value=““)的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05