伺服器中的tomcat能正常啟動,但專案無法載入的問題
問題描述如下:
在IDEA中建立的專案,程式碼編寫完成後,可以通過IDEA直接啟動tomcat執行,執行成功。
將專案打成war包,拖到tomcat安裝目錄的webapps目錄下,直接通過startup.bat啟動tomcat,訪問響應資源,執行成功。
將war包傳送到linux系統的伺服器中,通過伺服器中的tomcat來啟動。問題來了:
tomcat能正常啟動,可以跳轉到啟動成功的頁面。
但是隻要加上專案路徑,就會報404
總的來說問題就是在本地能執行的專案,放到伺服器中就載入不了,網上搜索相關解決方案。
在各路論壇、社群翻關於這類問題的解決方法。
發現這個問題很多人都遇到過,但是問題產生的原因卻是千奇百怪,因此不能指望有萬能的解決方法。
但是其中有好幾位dalao都提到了一個非常重要的思路:檢視日誌!
開啟tomcat安裝目錄下的logs資料夾,檢視catalina.xxx.log和localhost.xxx.log,發現報錯資訊:
has been compiled by a more recent version of the Java Runtime (class file version 53.0),this version of the Java Runtime only recognizes class file versions up to 52.0
檔案的執行版本高了,當前的執行環境解析不了。
我在windows中裝的是jdk1.9,而伺服器中裝的jdk1.8,因此就出現專案在本地能正常釋出,但是在伺服器中就載入不了的情況。
知道原因就好解決了,既然jdk1.9寫的程式碼在jre1.8中解析不了,那麼用1.8來編譯就好了。
在pom.xml中,新增一項屬性:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
或者直接新增tomcat外掛
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8900</port> <path>/</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <target>1.8</target> <source>1.8</source> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
配置載入完成後,再重新將專案打包,上傳到伺服器部署,載入成功!問題解決!
總結:
同樣症狀的問題,導致的原因可能千奇百怪,不能指望有萬能的解決方案!
出現問題不要亂,首先要做的是看日誌!查詢可能導致錯誤的原因,這樣才會有一個大體方向,再順著這個方向去排查。
能找出錯的原因,問題就已經解決了一大半。