【问题标题】:How to find path of current selected project in eclipse plug-in如何在eclipse插件中找到当前选中项目的路径
【发布时间】:2013-06-15 22:16:00
【问题描述】:

我正在尝试编写一个eclipse插件,我必须在其中找到当前选择的路径
项目。一件重要的事情是这是一个 C 或 C++ 项目,而不是我必须选择的 java 项目。我尝试了一些代码-

      File currDir = new File(".");
      String path = currDir.getAbsolutePath();
      path = path.substring(0, path.length()-1);
      System.out.println(path);

但是这个给出的是eclipse插件目录的路径而不是当前项目。

      IWorkspace workspace = ResourcesPlugin.getWorkspace();
      IWorkspaceRoot root = workspace.getRoot();
      IProject[] projects = root.getProjects();
      for (IProject project : projects) {
         try {
            printProjectInfo(project);    
             } catch (CoreException e) {
               e.printStackTrace();
             }
        }


       private void printPackageInfos(IJavaProject javaProject)
       throws JavaModelException {
             IPackageFragment[] packages = javaProject.getPackageFragments();
             for (IPackageFragment mypackage : packages) {

                 if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) 
                    {                
                      printICompilationUnitInfo(mypackage);
                     }
               }
              }

但是这个只选择java项目。

那么有没有什么办法呢.....

【问题讨论】:

    标签: eclipse plugins path


    【解决方案1】:
    public static IProject getCurrentProject(){    
            ISelectionService selectionService =     
                Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();    
    
            ISelection selection = selectionService.getSelection();    
    
            IProject project = null;    
            if(selection instanceof IStructuredSelection) {    
                Object element = ((IStructuredSelection)selection).getFirstElement();    
    
                if (element instanceof IResource) {    
                    project= ((IResource)element).getProject();    
                } else if (element instanceof PackageFragmentRootContainer) {    
                    IJavaProject jProject =     
                        ((PackageFragmentRootContainer)element).getJavaProject();    
                    project = jProject.getProject();    
                } else if (element instanceof IJavaElement) {    
                    IJavaProject jProject= ((IJavaElement)element).getJavaProject();    
                    project = jProject.getProject();    
                }    
            }     
            return project;    
        }
    

    希望它有效:-)

    【讨论】:

    • 谢谢 Sam 先生,对我来说 PackageFragmentRootContainer 不起作用,我使用了 PackageFragmentRoot。它给了我所选项目的名称,但我正在寻找该项目的绝对路径。有什么办法...
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2010-09-07
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多