最近,將Windows下開發的war包部署到Linux下的Tomcat時報了一個錯誤:tomcat error in opening zip file。按理說,如果正常,當把war包復制到webapps目錄下時,會自動解壓縮到與包名同名的文件夾下,但是事實並沒有解壓縮。所以到logs文件夾下看,報了上面的錯誤。
百度一下,可能是java版本與Tomcat版本和Linux下的不一致,一看,果然不一致,但其實版本都很接近,而且,詢問之前的開發人員,他們的war包是可以自動解壓縮的,也就是說不是版本的問題。還有就是通過ftp上傳文件時沒有使用二進制的傳送方式,這個也不是原因,因為我用的就是binary模式。那到底是什么原因?然后我又仔細看了一下報錯的信息,發現有一個是unreadable!為什么會是沒有辦法讀呢?我潛意識相當可能是文件的權限問題。
果斷ls -lt,看一下所有文件的權限,

第一列:drwxr-xr-x代表文件的類型及權限
以d開頭的為文件夾,以-開頭的為文件,
以l開頭的為連接文件
再細分,d后面其實是3個組合,每一個組合有rwx構成,分別表示文件擁有者的權限,組的權限和其他用戶的權限
第2列:文件的鏈接數.
第3、4列:分別代表擁有文件的用戶和組
第5列:文件的大小。
第6列:文件最后的修改時間。
第7列:文件名
原先ICardSys.war是-rw-r-----,也就是除了root用戶和system組之外,其他用戶都無法讀。所以,我想着應該給其他用戶加一個讀的權限,這樣也行可以解決unreadable的問題。文件權限修改,需要用到chmod,r代表4,w代表2,x代表1,比如rwx就用7來表示,所以我們chmod 644 ICardSys.war一下試一試。此時,發現可以自動解壓war包了,而且也多了新生成的文件夾。
到此該問題解決,但其實不難發現,同一種錯誤的原因可能是多種多樣的,網上的也無法能解決你的問題,還是要自己去思考。
參考文獻:
http://www.cnblogs.com/wangyuyu/p/3900098.html
http://jingyan.baidu.com/article/8cdccae963e442315413cd01.html
