如何在eclipse工作区中获取活动包路径

时间:2013-06-17 10:35:07

标签: eclipse eclipse-plugin

我不确定这是否是正确的问题,因为我无法获得我在eclipse中选择的文件夹的绝对路径。

以下是我写的代码,谁能告诉我缺少什么?

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        if (window != null)
        {
            IStructuredSelection selection = (IStructuredSelection) window.getSelectionService().getSelection();
            Object firstElement = selection.getFirstElement();
            if (firstElement instanceof IAdaptable)

            {   
                IFolder folder = (IFolder)((IAdaptable)firstElement).getAdapter(IFolder.class);
                IPath path = folder.getLocation();
                System.out.println(path);
            }
        }

提前致谢!!!!

2 个答案:

答案 0 :(得分:0)

尝试使用IPath#makeAbsolute()path设为绝对路径。您还可以使用IPath#toFile()将其转换为文件,然后将其设为绝对(File#getAbsolutePath())。 所以在你的样本中你可以写:

IPath path = folder.getLocation();
System.out.println("Absolute Path:     "+path.makeAbsolute());
System.out.println("Absolute FilePath: "+path.toFile().getAbsolutePath());

答案 1 :(得分:0)

我想我得到了解决方案........ 在上面的代码中,当我调试它时,IFolder变为空。

尝试了不同的方式并且有效。

public void run(IAction action) {
    ISelection sel=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
    IFolder folder=(IFolder) extractSelection(sel);
    IPath path=folder.getLocation();
    System.out.println("********************Folder Path"+path);

    }


 public IResource extractSelection(ISelection sel) {
     if (!(sel instanceof IStructuredSelection))
        return null;
     IStructuredSelection ss = (IStructuredSelection) sel;
     Object element = ss.getFirstElement();
     if (element instanceof IResource)
        return (IResource) element;
     if (!(element instanceof IAdaptable))
        return null;
     IAdaptable adaptable = (IAdaptable)element;
     Object adapter = adaptable.getAdapter(IResource.class);
     return (IResource) adapter;
  }