【插件開發】—— 14 Site is incorrect!編輯器啓動報錯!

  前言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時)就能夠了。

相關文章
相關標籤/搜索