我正在开发 eclipse 插件。在项目资源管理器中有几个项目,我将这些项目存储在不同的工作区中(我添加了新项目但不同的工作区)。为了获取所选项目的工作区,我使用以下代码
ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
但它始终返回我第一次打开项目时选择的工作区。有没有办法从项目资源管理器中获得对应于不同项目选择的不同工作区。
在项目选择侦听器中,您可以执行以下操作。我希望你指的是标准的eclipse项目资源管理器。
ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
IStructuredSelection structured = (IStructuredSelection) service.getSelection(IPageLayout.ID_PROJECT_EXPLORER);
if (structured instanceof IStructuredSelection)
{
Object selectedObject = ((IStructuredSelection) structured).getFirstElement();
if (selectedObject instanceof IAdaptable)
{
IResource resource = (IResource) ((IAdaptable) selectedObject).getAdapter(IResource.class);
if (resource != null)
{
IProject project = resource.getProject();
IPath location = project.getLocation();
}
}
}
所有项目都在当前工作区中创建。Eclipse 从来没有一次超过一个活动工作区。
如果使用其他位置创建项目,则可以在项目位置中看到该位置。
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("Project");
IPath pathInWorkspace = project.getFullPath();
IPath actualLocation = project.getLocation();
将"项目"替换为项目的名称,或从所选内容中查找项目。
pathInWorkspace
是工作区相对路径,在这种情况下只是/Project
。
actualLocation
是项目在文件系统中的实际位置。