前言html
博文縱覽編輯器
最近在弄編輯器的時候出現了一個十分尷尬的錯誤!這裏收錄一下:ide
BUG以下圖所示:函數
目測堆棧,與本身開發的代碼無關。徹底是Eclipse本身初始化的時候遇到了問題,最頭疼的就是這種問題。由於Eclipse本身的源碼十分龐大,調試起來太困難了。可是也顯而易見的是,既然堆棧都是Eclipse的源碼,那確定是個人使用問題了!這點毋庸置疑:spa
所以主要焦點仍是放在Editor的類聲明上面。調試
這個緣由報錯:Site is incorreoctcode
1 // Sanity-check the site 2 if (part.getSite() != site || part.getEditorSite() != site) { 3 throw new PartInitException(NLS.bind( 4 WorkbenchMessages.EditorManager_siteIncorrect, desc 5 .getId())); 6 }
觀察發現,應該是GetSite() 或者getEditorSite()的時候出錯!htm
因而自習觀察Editor類,尋找哪一個方法可能會出現錯誤!因而發現錯誤緣由!blog
當咱們建立Editor的時候,Eclipse爲咱們自動生成一個Editor的類,可是這個類時繼承editpart的,他須要實現一些抽象方法:繼承
public class test extends EditorPart { public test() { // TODO Auto-generated constructor stub } @Override public void doSave(IProgressMonitor monitor) { // TODO Auto-generated method stub } @Override public void doSaveAs() { // TODO Auto-generated method stub } @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { // TODO Auto-generated method stub } @Override public boolean isDirty() { // TODO Auto-generated method stub return false; } @Override public boolean isSaveAsAllowed() { // TODO Auto-generated method stub return false; } @Override public void createPartControl(Composite parent) { // TODO Auto-generated method stub } @Override public void setFocus() { // TODO Auto-generated method stub } }
而當咱們修改這個繼承的類時,並無刪除這些方法。
尤爲是這個init類,它重寫了父類的init方法,可是咱們卻忘記給出實現。因而初始化出錯....
刪除這個init(當修改繼承的類時)或者調用父類的init方法(當父類是Editpart時)就能夠了。