eclipse 在 loading workbench 時閃退的解決方案

  有次在eclipse中運行發佈於Tomcat中的項目,一切正常,但在停止Tomcat服務(Stop the server)時報錯了,由於當時比較着急,沒仔細看是什麼錯誤,就匆匆忙忙地把eclipse關掉了。結果就如標題所描述的那樣:運行eclipse後選擇原來的工作空間後,在加載工作空間(loading workbench)時,進度條走了一小段就閃退了。剛開始以爲是偶然情況,之後再次打開eclipse、重啓電腦後再次打開eclipse都還是一樣的情況!無奈,由於是在加載工作空間時閃退,就去工作空間下看了下日誌(<workbench>\.metadata\.log),結果發現了這樣的記錄:

!ENTRY org.eclipse.core.resources 2 10035 2014-05-28 22:25:27.998
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.

!ENTRY org.eclipse.core.jobs 2 2 2014-05-28 22:25:33.603
!MESSAGE Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.Workbench$55

從意思上看:第一條說工作空間裏存在未保存的改變;第二條說在平臺(eclipse?Tomcat?)關閉後工作(這個工作不知是指什麼,是指我之前運行的項目?)還在運行。

  找到問題了,下面就只有問谷哥(個人感覺比度娘更能準確的找到答案)!我把第一個問題“

The workspace exited with unsaved changes in the previous session

”放谷哥上搜,找到以下個人認爲有用的答案:

 1、換個工作空間,重新導入項目。呃… 那我辛辛苦苦更改的eclipse配置不得重新配置!pass

 2、把"<workbench>\.metadata\.plugins\org.eclipse.core.resources\.snap"刪掉就好了,但啓動eclipse後要重新導入項目。有點麻煩,(也有沒重新導項目的,參見http://www.cnblogs.com/yjmyzz/p/3588265.html,未測試)!pass

 3、把"<workbench>\.metadata\.plugins\org.eclipse.core.resources\.projects"下的相應項目(導致出錯的項目,即上一次運行過的項目)目錄下的".snap"刪掉就可以了,不用重新導入項目。這個感覺靠譜,不影響其他項目。試試看,但沒找到".snap"文件,倒是有".markers.snap"和".syncinfo.snap"。算了,死馬當活馬醫吧,就把".markers.snap"和".syncinfo.snap"刪掉。啓動eclipse,還是閃退。繼續看日誌,只剩下第二條記錄,說明第一條記錄的問題已經解決了。

  接下來當然還是谷哥,搜“

Job found still running after platform shutdown

”,這次的解決方案比較一致,就是把"<workbench>/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi"文件刪掉。我就照做了,結果果然可以啓動eclipse了,只是原先修改過的eclipse界面佈局恢復成默認的了,看了下preference配置,還好都在,不然又要花上半個小時重新配置。解決方法參見http://stackoverflow.com/questions/11310970/eclipse-juno-doesnt-start/12045547#12045547

  由於好奇,就把之前刪除的".markers.snap"和".syncinfo.snap"又還原了,啓動eclipse……

突然間有種想說“次哦”的感腳:我前面費得什麼勁兒啊,直接把這個刪了不就得了!

  問題解決了,感覺輕鬆多了。但很疑惑,就有editplus打開刪掉了的"workbench.xmi"看了看,看到了有"persistedState"標籤,裏面有很長很長的字符纔到標籤結束。搜索了下項目名(導致eclipse閃退的項目),全在這個"persistedState"標籤中,而且還有一堆的項目中的請求路徑。突然間想起曾見過有用命令行"eclipse -clean persistedState"解決該問題的方案,但我個人對命令行有中莫名的恐懼:它太強大了!剛開始沒敢試!但現在問題已經決解了,而且也好奇於是否真能解決問題,就把刪除了的"workbench.xmi"文件還原,覆蓋已存在(啓動eclipse後新生成的)的。啓動eclipse,閃退!啓動cmd,進入eclipse根目錄,運行"eclipse -clean persistedState",eclipse啓動界面彈出,等了片刻,彈出工作空間選擇對話框,選好後繼續,loading workbench… OK!成功啓動了!看樣子這個問題好像是"persistedState"導致的。隨即又打開了"workbench.xmi",看了下"persistedState"標籤,很簡短就結束了,沒有了之前關於項目的相關內容。

  反觀下來,這個問題好像是由於項目沒有正常關閉運行而導致"workbench.xmi"中的"persistedState"標籤還保持在運行時的配置造成的。想了想,還是記錄下來吧!以備自己以後回顧用,同時也給他人提供一個解決類似問題的思路。說得很囉嗦,不過個人感覺思路還是挺清晰的,但願自己以後回顧時還能看得懂!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章