Java 每次选择项目时获取所选项目名称

Java 每次选择项目时获取所选项目名称,java,eclipse-plugin,eclipse-rcp,Java,Eclipse Plugin,Eclipse Rcp,我正在使用ISelection获取所选项目名称 public static IProject getCurrentProject() { IProject project = null; ISelectionService selectionService = Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService(); ISelecti

我正在使用ISelection获取所选项目名称

public static IProject getCurrentProject() {    
        IProject project = null;    
        ISelectionService selectionService = Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();    

        ISelection selection = selectionService.getSelection();    


        if(selection instanceof IStructuredSelection) {    
            Object element = ((IStructuredSelection)selection).getFirstElement();    

            if (element instanceof IResource) {    
                project= ((IResource)element).getProject();    

            }  
            else if (element instanceof IJavaElement) {    
                IJavaProject jProject= ((IJavaElement)element).getJavaProject();    
                project = jProject.getProject();    
            }



        }

        return project;  
    }
问题在于,此函数仅在第一次执行时返回项目名称

当我在按钮事件上调用它时,我得到一个空指针异常,并且元素似乎是空的


每次调用此函数时,我必须更改哪些内容才能获得所选的项目名称?

Workbench
是一个内部类,您不能使用它。使用:

获取
IWorkbench
实例

ISelectionService.getSelection
返回当前活动部件中的选择,因此如果从编辑器或视图调用此选项,则会在其中获得选择,而不是在Package/Project explorer中获得选择

您可以调用
ISelectionService.getSelection(“零件id”)
来获取特定零件中的选择,但您必须计算零件id


您可以使用
iSelectService.addPostSelectionListener
了解所有部分选择中的更改。

我正在开发一个插件,这就是我使用Workbench的原因,我尝试在插件运行的地方获取所选项目名,我的函数返回所选项目名,但只是在第一次执行时(加载插件中的视图时)…我需要解决这个问题…除了核心Eclipse代码之外,Workbench在任何地方都是不可接受的。它是一个内部类,可以在不通知的情况下进行更改。可能在您第一次运行代码时,Package Explorer是活动部分,您得到了选择。在另一次运行时,其他部分是活动部分,它有一个空选择。每个部分都有自己的单独选择。
PlatformUI.getWorkbench()