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(),做空实现即可。