eclipse插件开发中如何获取当前的工程名称

时间:2021-10-16 23:28:58
在eclipse插件开发中,我要得到工程的根目录,但如果使用System.getProperty("user.dir"),会得到eclipse的安装根目录,如果使用String file = Platform.getInstanceLocation().getURL().getPath();
   System.out.println("file="+file);
则得到的是workspace的目录,现在不知道怎么得到工程名称
哪位能帮忙解决一下啊!!!

5 个解决方案

#1


帮顶!!

#2


以下是从网上找来的,如何获取相关路径的方法(没有全部试过,仅供参考): 
得到某PLUGIN的路径: 
              Platform.getBundle("mypluginid").getLocation().
              eclipse采用osgi后好像还可以:
              Activator.getDefault().getBundle().getLocation().(前提是这个插件有Activator这个类.这个类继承了ECLIPSE的Plugin类)
              eclipse采用osgi前好像好像是:
              MyPlugin.getDefault().getBundle().getLocation().(前提是这个插件有MyPlugin这个类.这个类继承了ECLIPSE的Plugin类)            
        2.   得到工作区路径:  Platform.getlocation();或
              ResourcesPlugin.getWorkspace();好像
              Platform.getInstanceLocation()也可行
        3.  得到ECLIPSE安装路径
             Platform.getInstallLocation();
         4. 从插件中获得绝对路径:   
              AaaaPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath()
              通过文件得到Project:
                IProject project = ((IFile)o).getProject();

            通过文件得到全路径:
                String path = ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();

            得到整个Workspace的根:
                IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

            从根来查找资源:
                IResource resource = root.findMember(new Path(containerName));

            从Bundle来查找资源:
                Bundle bundle = Platform.getBundle(pluginId);
                URL fullPathString = BundleUtility.find(bundle, filePath);

            得到Appliaction workspace:
                Platform.asLocalURL(PRODUCT_BUNDLE.getEntry("")).getPath()).getAbsolutePath();

            得到runtimeworkspace:
                Platform.getInstanceLocation().getURL().getPath();

            从编辑器来获得编辑文件
                IEditorPart editor = ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();
                IEditorInput input = editor.getEditorInput();
                if(input instanceof IFileEditorInput){
                      IFile file = ((IFileEditorInput)input).getFile();
                }

            获取插件的绝对路径:
                FileLocator.resolve(BuildUIPlugin.getDefault().getBundle().getEntry("/")).getFile(); 

#3


牛啊。

#4


获取正在加载的插件名称,怎么获取呢?

#5


人家问的是怎么得到当前“工程”的路径... 工程的路径。

#1


帮顶!!

#2


以下是从网上找来的,如何获取相关路径的方法(没有全部试过,仅供参考): 
得到某PLUGIN的路径: 
              Platform.getBundle("mypluginid").getLocation().
              eclipse采用osgi后好像还可以:
              Activator.getDefault().getBundle().getLocation().(前提是这个插件有Activator这个类.这个类继承了ECLIPSE的Plugin类)
              eclipse采用osgi前好像好像是:
              MyPlugin.getDefault().getBundle().getLocation().(前提是这个插件有MyPlugin这个类.这个类继承了ECLIPSE的Plugin类)            
        2.   得到工作区路径:  Platform.getlocation();或
              ResourcesPlugin.getWorkspace();好像
              Platform.getInstanceLocation()也可行
        3.  得到ECLIPSE安装路径
             Platform.getInstallLocation();
         4. 从插件中获得绝对路径:   
              AaaaPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath()
              通过文件得到Project:
                IProject project = ((IFile)o).getProject();

            通过文件得到全路径:
                String path = ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();

            得到整个Workspace的根:
                IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

            从根来查找资源:
                IResource resource = root.findMember(new Path(containerName));

            从Bundle来查找资源:
                Bundle bundle = Platform.getBundle(pluginId);
                URL fullPathString = BundleUtility.find(bundle, filePath);

            得到Appliaction workspace:
                Platform.asLocalURL(PRODUCT_BUNDLE.getEntry("")).getPath()).getAbsolutePath();

            得到runtimeworkspace:
                Platform.getInstanceLocation().getURL().getPath();

            从编辑器来获得编辑文件
                IEditorPart editor = ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();
                IEditorInput input = editor.getEditorInput();
                if(input instanceof IFileEditorInput){
                      IFile file = ((IFileEditorInput)input).getFile();
                }

            获取插件的绝对路径:
                FileLocator.resolve(BuildUIPlugin.getDefault().getBundle().getEntry("/")).getFile(); 

#3


牛啊。

#4


获取正在加载的插件名称,怎么获取呢?

#5


人家问的是怎么得到当前“工程”的路径... 工程的路径。