【插件开发】—— 14 Site is incorrect!编辑器启动报错!
前言
最近在弄编辑器的时候出现了一个十分尴尬的错误!这里收录一下:
BUG如下图所示:
目测堆栈,与自己开发的代码无关。完全是Eclipse自己初始化的时候遇到了问题,最头疼的就是这种问题。因为Eclipse自己的源码十分庞大,调试起来太困难了。但是也显而易见的是,既然堆栈都是Eclipse的源码,那肯定是我的使用问题了!这点毋庸置疑:
因此主要焦点还是放在Editor的类声明上面。
这个原因报错:Site is incorreoct
在编辑器模型构造函数中插入断电,可以正常执行,证明其他的文件没有问题。还是编辑器本身的配置问题。
查看报错源码,根据提示找到位置:
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()的时候出错!
于是自习观察Editor类,寻找哪个方法可能会出现错误!于是发现错误原因!
当我们创建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时)就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律