我正在研究eclipse插件。在项目浏览器中有几个项目,我将这些项目存储在不同的工作区中(我添加了新项目但工作区不同)。为了获得所选项目的工作空间,我使用以下代码
ResourcesPlugin.getWorkspace().getRoot().getLocation().toString();
但它总是返回我第一次打开项目时选择的工作区。有没有办法从项目资源管理器中获取与不同项目选择相对应的不同工作空间。
答案 0 :(得分:1)
在项目选择监听器中,您可以执行以下操作。我希望你指的是标准的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();
}
}
}
答案 1 :(得分:0)
所有项目都在当前工作空间中创建。 Eclipse从来没有更多的工作空间一次处于活动状态。
如果使用其他位置创建项目,则可以在项目位置看到该项目。
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("Project");
IPath pathInWorkspace = project.getFullPath();
IPath actualLocation = project.getLocation();
将“Project”替换为项目名称,或从选择中找到项目。
pathInWorkspace
是工作区相对路径,在这种情况下只是/Project
。
actualLocation
是文件系统中项目的实际位置。