2017-02-27 52 views
1

我有一個在Windows上運行的tomcat 8.0.32。Tomcat 8.0.32 - 網絡應用程序未使用更新的共享庫

在文件夾tomcat \ lib我有一個shared.jar文件。 shared.jar是所有Web應用程序使用的全局共享庫。 此文件包含含有恆定的Java類:

public final int CONSTANTVALUE = 1000; 

我有使用此CONSTANTVALUE 2個web應用程序。 我刪除shared.jar和複製一個新的shared.jar放到tomcat \ lib目錄中,有一個新的恆定值:

public final int CONSTANTVALUE = 2000; 

我重新啓動windows(和Tomcat),但應用程序仍無法看到值「1000」舊版本的shared.jar。

我已經確認這個類只存在於tomcat \ lib文件夾下,無處可見。應用程序WEB-INF \ lib沒有這個jar。

如果我刪除shared.jar,則由於ClassNotFoundException(確認正在使用shared.jar),Web應用程序無法運行。

如果我重新部署Web應用程序,他們拿起新的恆定值「2000」

爲什麼/如何tomcat的記得老版shared.jar的?

爲什麼我必須重新部署Web應用程序才能找到shared.jar已被替換爲新代碼? (擊敗共享庫的目的)

回答

0

原來,這是一個Java問題,而不是Tomcat。 Java編譯使用常量摺疊(內聯常量值),從而消除對共享庫的依賴。

使用技巧來避免不斷摺疊我設法強制依賴共享庫。