1. eclipse的含义?
2. import 已经存在package时候报错?
3. import 自定义package时候报错?
4. extension-point schema怎么用的?
5. extension callback object是如何初始化的?
6. extension-point 和 extension point 区别是什么?
1. eclipse mark 的含义:
eclipse outline 里面,仔细看还是挺有意思的:
红色:private
绿色:public
黄色:protected
蓝色:default, friendly, packeage internal use
方法边的小三角:此方法继承自基类
s: static
f: final
2. import 的项目,如果某些java文件的import org.eclipse.jface.* 报错,或者import org.eclipse无法解析,怎么办?
检查一下该项目的MANIFEST.MF, 格式应该类似下面这样:
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.jdt.core,
org.eclipse.jdt.ui
当然,如果直接更改项目属性-java build path - library ,add external library也可以。但是注意,不能两处地方同时引入同一个包。
3. import 自定义package时候报错?
自定义了接口在package1, 需要在package2里面import package1, 怎么办?
1. 被依赖的package1(在其他包被import的package)要导出自己。menifest.mf->runtime->Exported Package, select this package.
2. 依赖其他package的package2要在自己的menifest.mf-> Dependency-> Required Plug-ins-> add 需要import的包。
3. Alt+'/' : 自动补齐import内容。
4. extension-point schema怎么用的?
用来定义使用该extension-point的extension,具体是怎么使用extension-point的。具体可以参考另外一篇"extension-point schema解读"
5. extension callback object是如何初始化的?
首先,extension callback object是和extension定义文件(plug-in.xml)里面的每个xml element相对应的。不同的element会初始化各自的callback object instance。正常情况下,extension class要implements IExecutableExtension接口。并且通过public Object IConfigurationElement.createExecutableExtension(String propertyName) 初始化callback object。这是instantiating , 那么initializing 呢?
因为createExecutableExtension()会调用setInitializationData(), 所以可以重写该函数,通过该函数将plug-in.xml中定义的参数,通过IConfigurationElement member.getAttribute(POWER_ATTRIBUTE), 将plug-in.xml文件中的参数,赋给callback object所在类的private member。
6. extension-point 和 extension point 区别是什么?
在plug-in.xml文件里,首先定义的是类似这样的extension-point:
<extension-point id = "paletteTool" name = "My paletteTool" shcema = "schema/paletteTool.exsd">
这表示该plug-in定义的extension point, 是这个plug-in暴露出来的接口。
plug-in.xml文件后半部分,能看到类似这样的extension point定义:
<extension point = "org.eclipse.ui.actionSets">
<actionSet id = "fdsalkfj" 等等。
这实际表示的是一个extension,该extension 的point为"org.eclipse.ui.actionSets".
所以,extension和extension- point都在plug-in.xml文件里定义。