Eclipse PDE:给定像/ProjectName/lib/something.jar这样的相对路径,如何获得完整的文件系统路径?

Jam*_*ore 5 eclipse eclipse-pde eclipse-plugin

我正在尝试找到原始类路径中的jar文件的路径.getRawClasspath返回IClasspathEntry对象的集合.我可以在那些上调用getPath.

但getPath返回一些奇怪的东西:一个以项目名称开头的IPath,如:

/ProjectName/lib/something.jar

将此相对路径转换为完全合格的OS路径的正确方法是什么?起初我以为我可以添加工作区根目录的路径,但这不起作用,因为工作空间和项目之间经常有中间目录.

更一般地说,我如何知道如何处理方法返回的IPath?好像我从来不知道IPath是什么; 相对于项目,相对于工作区,相对于项目,但项目名称作为第一个元素,相对于月相...这一切都莫名其妙,文档从来没有帮助 - 或者至少我不喜欢不知道在哪里看.

UPDATE

我现在更加困惑.问题仍然是,当你有一个IClasspathEntry时,我仍然不清楚如何将它解析为文件系统路径.

答案是"如果路径以/它是绝对路径(相对于工作空间)开始"是不正确的.问题是IClasspath上的getPath方法返回以下两种情况之一:以斜杠开头的路径相对于工作空间,或者以/是实际文件系统路径开头的IPath.是的,两个完全不同的东西被推入一种类型.当jar在工作空间之外时,你得到文件系统变体,你得到"绝对"它在工作区中的变体.

我认为部分答案是IPath本身只是一个奇特的字符串.你必须知道它来自哪里才能理解它.它没有提供正确的信息以使其本身有用.

那么解决这个问题的正确方法是什么?

Dol*_*lyn 5

试试这个:

    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    IResource res = root.findMember("/ProjectName/lib/something.jar");
    System.out.println(res.getLocation().toString());
Run Code Online (Sandbox Code Playgroud)