標籤:一個 資訊 潛意識 二進位 java 分享 不難 zip linux
最近,將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
Windows下war包部署到Linux下Tomcat出現的問題