Eclipse插件開發中遇到的一些異常總結


 

Eclipse插件開發中遇到的一些異常總結

 Eclipse插件開發涉及到的方面很廣,有時候遇到一些奇怪的錯誤也很多,以下是我在Eclipse插件開發中遇到一些特別異常后的一些解決方法,這些一些是來自網上搜索到的,一些是自己的總結。這篇隨筆將會做為我的積累不斷地更新,也希望能幫到一些遇到相同問題的coder們!

 
1."org.eclipse.ui.PartInitException: Unable to open editor, unknown editor ID: package.class"處理方法
報錯原因:plugin.xml中<extension>標簽中沒有icon項
   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="testrcp.testeditor"
            id="testrcp.testeditor"
            name="New EditorPart">
      </editor>
   </extension>
解決方法:plugin.xml中<extension>加入icon,該項可以為空。
   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="testrcp.testeditor"
            icon=""
            id="testrcp.testeditor"
            name="New EditorPart">
      </editor>
   </extension>

2."org.eclipse.ui.PartInitException: Editor initialization failed: package.class.  Site is incorrect."處理方法

報錯原因:EditorPart類的init()未實現
解決方法:實現init()方法如下  
    public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {
       
        System.out.println(input.toString());
        this.setInput(input);
        this.setSite(site);
   
    }

3."org.eclipse.core.runtime.AssertionFailedException: null argument:A part's title tool tip must be non-null"處理方法

報錯原因:EditorInput類的getToolTipText()返回值為null
解決方法:重寫getToolTipText()方法return值可以為""或任意字符類型。
    public String getToolTipText() {
        return "";

    }

4.文件資源不同步的處理方法

很多時候我們在開發Eclipse程序時,如果對於文件操作沒有采用IFile來進行,而是使用java.io.File,亦或者通過第三方的程序去修改文件資源,那么就會引發實際文件與IFile不同步的問題,因為性能的問題,IFile的信息是做了緩存的,所以一般情況下對文件進行操作首先考慮使用 IFile本身提供的方法或者Eclipse里提供的一些工具類來進行。但我們並不總是能夠保證文件的操作是我們所想的,那么如何判斷一個IFile是否和文件系統同步呢?
解決方法:比較文件的IFile對象和java.io.File對象的時間戳,如果不相同,那么刷新IFile對象。
 if(IFile.getLocalTimeStamp() != File.lastModified()) {
     IFile.refreshLocal(int depth, IProgressMonitor monitor);

}

5.擴展SWT的widgets出現"org.eclipse.swt.SWTException: Subclassing not allowed" 的處理方法

報錯原因:Eclipse有這樣句話“Custom widgets are created by subclassing in the existing widget class hierarchy”,意思是擴展widgets的類必須和widgets類是在同一類層次才行。
解決方法:有兩種,第一種是將你擴展的類的包改為改成package org.eclipse.swt.widgets,即widgets類在同個類層次;
                         第二種擴展類重寫widgets類中進行類層次檢查的方法protected void checkSubclass(),做空實現即可。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fm2005/archive/2009/05/13/4178728.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM