gpt4 book ai didi

java - 如何在 Eclipse 插件中获取 Java 项目的类路径作为文件路径?

转载 作者:行者123 更新时间:2023-11-30 06:36:10 27 4
gpt4 key购买 nike

我正在开发一个 Eclipse 插件,该插件需要构建一个类加载器,该类加载器可以访问 Eclipse 项目类路径中的所有内容。我有一个 IJavaProject,我正在尝试构建要传递给 URLClassLoader 的 URL 列表:

final IClasspathEntry[] resolvedClasspath = javaProject.getResolvedClasspath(true);
for (IClasspathEntry classpathEntry : resolvedClasspath) {
urls.add(classpathEntry.getPath().makeAbsolute().toFile().getCanonicalFile().toURL());
}

但是任何项目依赖项(无论是手动添加的,还是在 Maven 插件的“Maven Dependencies”容器中)都显示为“file:/projectName”,而不是绝对路径。

其他实验涉及使用 javaProject.getAllPackageFragmentRoots(),但这似乎不包括“Maven 依赖项”容器内的项目依赖项。

最佳答案

makeAbsolute() 调用不是上下文感知的。它只是添加了一个前导“/”。

您需要检查路径是否是绝对路径 (IPath.isAbsolute())。如果不是绝对的,请调用 IProject.getLocation() 以获取项目根目录并连接两个路径。

提示:UrlClassLoader 将在该类加载器存在期间锁定所有 jar。这可能会给您的插件用户带来问题,因为当您的插件处于 Activity 状态时,他们将无法删除或更改 jar。我已经看到了几种解决方法。最有效的方法是先将 jar 复制到一个临时位置,然后用副本构建类加载器。然后您可以监控原始 jar 并更新您的副本和类加载器,而无需冒锁定用户控制文件的风险。

关于java - 如何在 Eclipse 插件中获取 Java 项目的类路径作为文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162369/

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