gpt4 book ai didi

Eclipse PDE : given a relative path like/ProjectName/lib/something. jar,你如何获得完整的文件系统路径?

转载 作者:行者123 更新时间:2023-12-04 20:18:33 24 4
gpt4 key购买 nike

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

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

/ProjectName/lib/something.jar

将此相对路径转换为完全限定的操作系统路径的正确方法是什么?起初我以为我可以将路径添加到工作区根目录,但这不起作用,因为工作区和项目之间通常有中间目录。

更一般地说,我怎么知道如何处理方法返回的 IPath?似乎我永远不知道 IPath 是什么;相对于项目,相对于工作区,相对于项目,但以项目名称作为第一个元素,相对于月相......这一切都令人困惑,文档从来没有帮助 - 或者至少我没有不知道去哪里看。

更新

我现在更糊涂了。问题仍然是,当您拥有 IClasspathEntry 时,我仍然不清楚如何将其解析为文件系统路径。

答案是“如果路径以/开头,则它是绝对路径(相对于工作区)是不正确的。问题是 IClasspath 上的 getPath 方法返回两件事之一:以斜杠开头的路径相对于工作区,或以/开头的 IPath,这是一个实际的文件系统路径。是的,两种完全不同的东西被插入一种类型。当 jar 位于工作区之外时,您将获得文件系统变体,并且您将获得“绝对”它在工作区中时的变体。

我认为部分答案是 IPath 本身只是一个花哨的字符串。你必须知道它来自哪里才能理解它。它本身并没有携带正确种类的有用信息。

那么处理这个问题的正确方法是什么?

最佳答案

尝试这个:

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

关于Eclipse PDE : given a relative path like/ProjectName/lib/something. jar,你如何获得完整的文件系统路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com