天天看點

關于Eclipse 無法安裝高版本Tomcat的解決辦法

我使用的eclipse mar2目前是不支援tomcat9的,但也不是沒有變通的辦法來解決這個問題,

以下是我在windows環境下的解決的過程(tomcat版本:apache-tomcat-9.0.0.M6),

不想看過程的也可以直接跳到3直接看解決辦法:

1.在bin目錄下有個檔案:version.bat。

在 version.bat 的末尾處(56行)有行指令 :

call "%EXECUTABLE%" version %CMD_LINE_ARGS%

在中部(38行)你能找到變量EXECUTABLE的指派指令:

set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

2.打開catalina.bat 搜尋version 在250行左右你會發現下面一行指令:

if ""%1"" == ""version"" goto doVersion

也就是說當參數為 version時 跳轉到 doVersion函數

查找doVersion (大概在306行)找到如下資訊:

%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
goto end```
然後反編譯catalina.jar找到org.apache.catalina.util.ServerInfo就會發現:如下代碼:
```InputStream is = ServerInfo.class.getResourceAsStream("/org/apache/catalina/util/ServerInfo.properties");
......
props.load(is);
info = props.getProperty("http://server.info");
built = props.getProperty("server.built");
number = props.getProperty("server.number");
.....
if (info == null)
info = "Apache Tomcat 9.0.x-dev";
if (built == null)
built = "unknown";
if (number == null) {
number = "9.0.x";
}
serverInfo = info;
serverBuilt = built;
serverNumber = number;
           

3.找到lib下的catalina.jar,使用壓縮軟體打開。找到org/apache/catalina/util/ServerInfo.properties,然後修改server.info與server.number的值,僞裝成tomcat8即可。例如我就是直接把tomcat8.0.14的考過來的:

server.info=Apache Tomcat/8.0.14

server.number=8.0.14.0

運作時日志:

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Server version: Apache Tomcat/8.0.14

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Server built: May 11 2016 21:43:59 UTC

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Server number: 8.0.14.0

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: OS Name: Windows 10

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: OS Version: 10.0

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Architecture: amd64

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: Java Home: D:\Java\jdk1.8.0_77\jre

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: JVM Version: 1.8.0_77-b03

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: JVM Vendor: Oracle Corporation

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: CATALINA_BASE: D:\Server\apache-tomcat-9.0.0.M6

五月 24, 2016 12:22:02 下午 org.apache.catalina.startup.VersionLoggerListener log

資訊: CATALINA_HOME: D:\Server\apache-tomcat-9.0.0.M6