1. 程式人生 > >伺服器中的tomcat能正常啟動,但專案無法載入的問題

伺服器中的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>

配置載入完成後,再重新將專案打包,上傳到伺服器部署,載入成功!問題解決!

總結:

同樣症狀的問題,導致的原因可能千奇百怪,不能指望有萬能的解決方案!

出現問題不要亂,首先要做的是看日誌!查詢可能導致錯誤的原因,這樣才會有一個大體方向,再順著這個方向去排查。

能找出錯的原因,問題就已經解決了一大半。