如何通过java程序获得对eclipse工作区或项目的控制

如何通过java程序获得对eclipse工作区或项目的控制,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我一直坚持使用java程序打开eclipse项目 节目: IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = workspace.getRoot(); System.out.println("Root path: "+root.getFullPath().toString()); 结果: IWorkspace workspace = ResourcesPlugi

我一直坚持使用java程序打开eclipse项目

节目:

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    System.out.println("Root path: "+root.getFullPath().toString());
结果:

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    System.out.println("Root path: "+root.getFullPath().toString());
根路径:/

目标:

我的项目位于假定路径:C:/User/XYX/workspace/project2

步骤1:我想打开这个工作区

步骤2:工作区中的特定项目-例如project2

步骤3:刷新项目

有人能帮我吗?

根据,工作区根目录的路径始终是
/
,因为路径是相对于工作区的

看来你正朝着好的方向前进。然后,您是否尝试打开一个项目并刷新它,例如:

root.getProjects()[0].refreshLocal()
或按项目名称打开项目:

root.getProject("project2").refreshLocal()
getFullPath()
给出了相对于工作区根目录的位置,因此这对于根目录本身总是
/
getLocation()
提供文件系统中的路径

在插件或Eclipse无头应用程序中,工作区会自动打开

获得一个项目

IProject project = root.getProject("project2");
并用

project.refreshLocal(IResource.DEPTH_INFINITE, progressMonitor);

要更改根文件夹,只需执行以下操作:运行菜单->运行配置->主(选项卡)->工作区数据:位置->将其更改为所需的工作区文件夹

这是Eclipse插件吗?您不能在普通Java程序中使用Eclipse API。您必须使用插件或编写Eclipse无头应用程序。是的,它是一个插件应用程序:IProject[]projectList=root.getProjects();System.out.println(“总项目:+projectList.length”);结果:项目总数:0:(:)您是通过插件执行此操作的吗?我在下面尝试:-workspace=ResourcesPlugin.getWorkspace();root=workspace.getRoot();System.out.println(“根路径:+root.getLocation());project=root.getProject(路径+项目名称);System.out.println(“项目路径:+project.getLocation());project.refreshLocal(project.project,null);在第行:project=root.getProject(path+projectName);我遇到异常:java.lang.IllegalArgumentException:project的路径必须只有一个段。返回的根路径类似于:C:/User/XYX/junit workspace
getProject
仅采用项目名称-无路径。
refreshLocal
的第一个参数是depth-project。project不合适。根据您的建议estion I从getProject()中删除了路径,并更改了refreshLocal()的第一个参数到IResource.DEPTH\u INFINITE,现在项目路径返回为null。我有疑问:如果根路径是C:/User/XYX/junit workspace,并且我要操作的项目位于C:/User/XYX/workspace位置,则仅将项目名称作为project2传递不会导致在junit workspace中搜索project2???如果这样做,那么我们将需要更改默认根路径。如何实现此目的?必须在当前工作区中指定项目,不能在其他工作区中处理项目。在Eclipse启动期间,使用的工作区是固定的,不重新启动Eclipse无法更改。您可以编写单独的Eclipse headless应用程序来访问第二个并使用
Runtime.exec
或类似工具运行它。