前言: 驗證tomcat安裝成功 安裝之後: 1.到安裝目錄下找startup.bat不閃退,並出現以下圖2為成功安裝: 再打開谷歌瀏覽器輸入: localhost:8080驗證. 1、解決Tomcat8啟動時控制臺中文亂碼問題(不止是版本8,其他版本依舊適用) 從Tomcat官網上下載下來的Tom ...
前言:
驗證tomcat安裝成功
安裝之後:
1.到安裝目錄下找startup.bat不閃退,並出現以下圖2為成功安裝:
再打開谷歌瀏覽器輸入: localhost:8080驗證.
1、解決Tomcat8啟動時控制臺中文亂碼問題(不止是版本8,其他版本依舊適用)
從Tomcat官網上下載下來的Tomcat,在初次運行【 bin\startup.bat】 時,控制台窗體會出現下圖所示的中文亂碼。
經過查看分析,應該是Tomcat的log日誌模塊在記錄時出現了中文字元不識別的問題。
在Tomcat的啟動文件“catalina.bat”中約215行可以看到如下:
如果沒有設置"%LOGGING_CONFIG%"值,則.......。
到Tomcat根目錄下“conf”子目錄下的“logging.properties”文件中查看日誌記錄的配置,找到該文件,可發現很多的“encoding = UTF-8”配置項,因此判斷是該配置項影響了Tomcat控制台的中文亂碼輸出:
方法(1):將所有的“encoding = UTF-8”都修改為“encoding = GBK”,使其識別支持中文,保存文件修改後,再次啟動Tomcat,則看到如下的正常控制台界面,中文亂碼不見了。
方法(2):加入 java.util.logging.ConsoleHandler.encoding = GBK ,保存文件修改後,再次啟動Tomcat,則看到如下的正常控制台界面,中文亂碼不見了。
2、Tomcat啟動一閃而過就消失的原因和解決方法
原因一:
(1)首先要搞明白啟動不起來的原因。方法是在命令行下,運行startup.bat文件,這樣程式就不會一閃而過,而會將啟動不起來的原因列印到視窗上。
(2)在命令行下啟動tomcat的方法讀者應該都很清楚,大體就是:cmd啟動命令行視窗→通過cd命令到tomcat的bin目錄下→運行startup.bat。
(3)通過命令行的提示看到,這是因為電腦上沒有配置JAVA_HOME或者JRE_HOME導致的。那麼下麵添加上JAVA_HOME和JRE_HOME。具體步驟為電腦→屬性→環境變數,然後添加系統變數;
(4)添加完JAVA_HOME和JRE_HOME兩個系統變數之後,在將這兩個變數放到path系統變數中,方法是,在path變數值的後面直接追加 【;%JAVA_HOME%;%JRE_HOME%】註意!分號是環境變數的分割符號,不可少。
但是通過親自測試,發現只配置環境變數 JAVA_HOME 即可以啟動 tomcat 的 startup.bat 不發生閃退。
如果不配置 path變數中的: %JAVA_HOME%\bin; ,則無法在命令行中正常運行java、javac和java -version 命令。
原因二:
雙擊tomcat的bin目錄下的startup.bat時一閃而過時,可以右鍵startup.bat找一個文本編輯器打開,然後在文本的最後敲上pause,保存後重新運行startup.bat,這時候視窗會留在桌面上(調試成功,把pause去掉即可)。我們可以看到DOS視窗里有錯誤信息。
1. The JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program
原因:以前版本的tomcat需要JDK,現在的tomcat(本人的是7.0)只要有JRE就可以。 如果你裝的tomcat的是解壓版的(免安裝的)那麼則需要自己手動配置JRE_HOME 這個環境變數,否則,就會出現上面的錯誤。 解決辦法:右擊 我的電腦 - 高級 - 環境變數, 在系統變數中 新建 變數名:JRE_HOME 變數值:C:\Program Files\Java\jre7(根據你自己的JDK安裝目錄尋找JRE)
2.Neither the JAVA_HOME nor the JRE_HOME environment variable is defined Tomcat的startup.bat,
它調用了catalina.bat,而catalina.bat則調用了setclasspath.bat,只要在setclasspath.bat的開頭聲明環境變數(紅色兩行)就可以了,原因是後來較新版本安裝完不會自動登記環境變數JAVA_HOME,JRE_HOME。 給setclasspath.bat的開頭添加紅色標記部分,如下: rem ___________________________ rem Set CLASSPATH and Java options rem rem rem ____________________________ set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20 set JRE_HOME=C:\Program Files\Java\jre6 rem Make sure prerequisite environment variables are set if not “%JAVA_HOME%” == “” goto gotJdkHome if not “%JRE_HOME%” == “” goto gotJreHome echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined echo At least one of these environment variable is needed to run this program goto exit
這樣在每次運行startup.bat時就自動註冊了JAVA_HOME,JRE_HOME。 運行startup.bat,提示“信息:Server startup in xxxxx ms” OK 大功告成。
3. Cannot find “”d:\apache-tomcat-6.0.32”\bin\setclasspath.bat”
這個時候,可能是CATALINA_HOME的值在某個地方被寫死了,像我的綠色版tomcat在bin文件下多了一個setenv.bat的文件,打開一看果然是在這裡面被寫死了CATALINA_HOME的路徑,這應該是為了某種原因被人後加上的設置文件,把這個文件刪除之後,tomcat可以正常運行了。
原因三:
如果你的環境配置沒有錯,也沒有上述兩種錯誤那麼可能你已經啟動了一個Tomcat,這樣兩個Tomcat會產生衝突。你可以在com中查看8080是否被占用:
(1)我們可以使用如下命令來找出哪個進程占用5037這個埠
netstat -ano | findstr "5037"
(2)最後一列為占用5037埠的進程號,PID為9060,那麼我們可以在任務管理器里查看改進程號所對應的進程,直接右擊結束該進程即可。或者使用上面提到的taskkill命令,它主要是用來批量刪除某些進程,當然,也可以用來刪除一個進程,使用方法如下:
taskkill /PID 9060 /F 其中,/F主要是用來強制刪除。
你也可以查看Tomcat自帶的列印日誌在你的Tomcat的logs文件夾下如果出現了
七月 04, 2018 10:40:20 上午 org.apache.catalina.core.StandardService initInternal
嚴重: Failed to initialize connector [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
類似的錯誤可能已經運行了一個Tomcat你可以在服務中把它終止掉,然後再運行自己的Tomcat就可以了。
3、啟動 tomcat 後提示警告:Can't load AMD 64-bit .dll on a IA 32-bit platform
將tomcat\bin下的 tcnative-1.dll 文件刪除掉,則報如下警告,並未解決問題。
問題所在:
主要是在64位的系統下安裝的虛擬機是32位的,不能在64位的平臺下載入32位的虛擬機,只能載入64位的。由於tomcat在安裝的時候載入的32虛擬機的地址,它找到的是32位的虛擬機,所以它提示不能載入64位的虛擬機(在目錄下沒有64的虛擬機)。
解決之道:
下載一個64的JDK安裝,修改JAVA_HOME。
如果設置上面之後還有問題,那麼下載32/64位集合體的Tomcat:
地址:http://tomcat.apache.org/download-70.cgi
32-bit/64-bit Windows Service Installer (pgp, md5)
直接下載地址:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.exe
安裝這個Tomcat之後,再運行就不會出錯了。
如何查看jdk的版本是32位還是64位
在cmd下輸入java -version來查看,如果沒有標明是多少位的,預設一般是32位的。
下圖為64位:
(箭頭指示jdk版本)
還有一種比較粗曠的方式 這個從CPU說起: IA-32架構與IA-64架構 IA是Intel Architecture(英特爾體繫結構)的英語縮寫 IA-32架構有32位CPU也有64位CPU。(我們經常使用的CPU)
IA-64架構下有Intel64位的CPU(只有伺服器使用的CPU)
IA-32架構: 本架構的CPU都採用X86指令 Intel,AMD,Cyrix等廠家都生產X86指令集的CPU 其中32位(x86-32)的CPU有i80386,i80486,i80586,i80686,統稱i80X86,簡稱x86 其中64位(x86-64)的CPU有:2006年以後生產的PC機CPU都是64位的,簡稱x64 最大的優點在於可以全面相容以前32位x86指令的應用程式,他們都是IA-32架構。
由此可以簡單判斷一些軟體(svn,jdk等)的版本位數,要看軟體預設安裝的位置來進行判斷,如下圖:
Program Files預設安裝路徑在此文件下是64位數的版本;
Program Files(x86)預設安裝路徑在此文件下是32位數的版本;
如何查看tomcat的位數
1】一般通過解壓的文件名稱可以加以判斷位數: x86即32位,64 即64 位。
2】在cmd命令行界面,運行tomcat/bin下的 version.bat 文件
其中 Architechture參數值就是位數。 server number 參數值就是tomcat版本號。