阿里雲伺服器搭建 踩坑日誌(四)jar包改war包
spring boot 框架下打包,預設是jar包,上傳到伺服器上 可以直接執行,不需要單獨的配置tomcat環境,十分方便。
但是 在實際使用過程中,如果需要修改專案,比如只是修改少量的介面格式,就需要重新上傳jar包,這一點就非常不方便了,尤其是在公司網路做了限制(比如我們公司),上傳50M的包需要十分鐘的情況下,就想哭了。
所以我還是重新使用war包了。
一、Spirng boot 打war包
這個在網上很容易找到。比如:
https://blog.csdn.net/datiancai2008/article/details/60466313
按照文件修改專案,就能打出war包了
注意:
1、通過tomcat執行專案,那麼在專案本身中配置檔案application.properties 中的的tomcat的相關屬性就不起作用了,比如
#Tomcat 相關配置
server.port =8099
server.servlet.context-path=/
①埠號是在tomcat的service中配置,專案名稱是tomcat中 war包名稱 。
②這裡可以在pom.xml檔案中配置war包的名稱,避免每次都要改名字。
二、tomcat 中文亂碼問題
執行之後發現新版的tomcat上中文變為了亂碼。
網上文件也很多,整理了一下,問題可能出現的地方有:
1、統一所有專案,檔案的編碼格式都為utf-8
①在conf目錄下 server.xml檔案裡面設定埠的編碼為utf-8 。
② 於在bin 目錄下的catalina 配置檔案中,新增以下設定
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"
③修改bin目錄下startup.bat檔案
將call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改為 call "%EXECUTABLE%" run %CMD_LINE_ARGS%
2、檢視制臺資訊,( 標題處,右鍵,選擇屬性),檢視單錢內碼表編碼,
我出現的就是這個問題,在新版的tomcat上,預設是936 GBK格式的。
修改方法:
在windows 環境中
執行中輸入regedit命令,開啟登錄檔,找到HKEY_CURRENT_USER→Console→Tomcat(如果你改了tomcat的標題欄,這裡就是你開啟的命令視窗的名字),
找到CodePage項,沒有則建立,更改值為十進位制的65001,點選確定。
在實際操作過程中,有可能會遇到 沒有tomcat這個檔案的情況,執行tomcat,開啟一個介面比如localhost:8080,然後在檢查一下有沒有目錄。
三、war啟動失敗
在實際操作過程中,發現 tomcat正常啟動了,但是 war包專案一直啟動失敗,
而且 專案用IDEA編輯工具run是能夠正常執行的,哭
因為這是個問題在tomcat的日誌中顯示很不明顯,所以話了很多時間去定位。
①沒有配置啟動項,
需要在Application啟動類中基礎SpringBootServletInitializer 並複寫configure方法。這是網上的提的的,在文章上部分提到的打war包的時有提到。
如果沒有配置,專案不會正常啟動,也就打不開
② tomcat版本問題,
這個是網上提到的很多的。
我的tomcat是8.5的。試了6、7、9 都沒有解決問題。還花了很多時間去解決版本不同而引發的其他的問題,坑
③jar 包重複的問題
按照tomcat的日誌,和網上查到的,確實在JDK版本和tomcat 版本不配的情況向出現。
最後在logs檔案下找到了詳細的報錯日誌 !!!!
平時看的是catalina檔案,裡面是tomcat相關的日誌,這裡面對專案專案的錯誤日誌記錄的比較粗糙。
但是在localhost檔案中,裡面的有詳細的錯誤日誌。
最後定位是專案本身有bug。
解決了專案中springboot直接釋出和使用tomcat釋出的一個相容性問題之後,就成功的使用tomcat釋出了springboot打的war包了
之前不清楚,真的浪費了好多時間。