我有下面的代码,这实际上效果很好:如何在eclipse编辑器中正确打开当前打开的类?
IJavaElement je = null;
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if (part instanceof ContentOutline)
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (part instanceof IViewPartInputProvider)
{
Object elem = ((IViewPartInputProvider)part).getViewPartInput();
if (elem instanceof IJavaElement)
je = (IJavaElement)elem;
}
但我得到一个警告:
Discouraged access: The type IViewPartInputProvider is not accessible due to restriction on required library C:\eclipse\plugins\org.eclipse.jdt.ui_3.9.1.v20130820-1427.jar
看来,这是因为访问内部API的一个肮脏的方式。有一个更好的方法吗?
更新
我发现这个代码工作正常,太多,但不会产生任何警告:
IJavaElement je = null;
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if (part instanceof ContentOutline)
part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
je = JavaUI.getEditorInputJavaElement(((IEditorPart)part).getEditorInput());
因为我省略了一些检查,我很担心,此代码会导致运行时错误如果有人使用我的插件有不同的日食配置。任何改进建议?
感谢您的回答,下周我会修复我的代码。 顺便说一句:你能推荐我一本书或这个话题的另一个来源? –
对不起,我一直在做Eclipse开发,只要看了3.x开发的书籍就已经很久了。 –