为什么类通过自定义类路径容器添加到jar中而不能用于代码完成?

时间:2014-07-26 10:03:00

标签: java eclipse eclipse-plugin eclipse-jdt

通过代码完成中可见的自定义类路径容器提供的类是什么?

我已经成功实现了一个自定义类路径容器,它将库添加到项目中。它将特定文件夹中的所有jar添加到构建路径,除非工作区中有一个具有相同名称的项目,在这种情况下引用该项目。

现在这显然似乎有效,当我从其中一个jar中引用一个类时,代码编译,但我没有看到代码完成建议中的类。当我在工作区中有正确的项目时,我在代码完成中看到了这样一个类。

我已经完成了以下步骤来实现这一目标,而我部分考虑了tutorial from IBM

  • 实现ClasspathContainerInitializer
  • 实现ClasspathContainerPreferencePage以进行其他配置
  • 实施IClasspathContainer

当我将容器添加到项目中时,我按照预期在包浏览器中看到了jar。 (只有当没有相应的项目可用时,Jar存在,Logging显示预期的结果)

我可以使用通过类路径容器集成的jar中的类而不会出现编译器错误,它们不能用于代码完成,而在Quick Fixes中可以添加正确的导入。所以我想我可能只是错过了一些扩展点的贡献。

2 个答案:

答案 0 :(得分:1)

答案基本上是:除了实施这三个部分之外,您不需要做任何其他事情。但你必须以正确的方式去做。

ClasspathContainerPreferencePage 以准备容器以将其添加到项目中。

ClasspathContainer 作为实体添加到项目中。对于这个,正确实施所有需要的方法非常重要。对我来说问题是我在方法 getKind()中返回了一个错误的常量值。而不是返回 IClasspathEntry.CPE_CONTAINER 我只需要使用 IClasspathContainer.K_APPLICATION ,并且代码完成开箱即用:

public int getKind() {
    return IClasspathContainer.K_APPLICATION;
}

最后是 ClasspathContainerInitializer ,用于准备和更新容器。

答案 1 :(得分:0)

我使用Eclipse Luna,Eclipse甚至可以从自定义外部JAR自动完成代码。你应该考虑升级到Luna,如果你还没有看到它解决你的问题