/ / Защо класовете, съхранявани в буркани, добавени чрез обичайния контейнер за класически път, не са налице за завършване на код? - java, eclipse, eclipse-plugin, eclipse-jdt

Защо класовете, които се съхраняват в буркани, са добавени чрез контейнер за класически път, който не е наличен за завършване на код? - java, eclipse, eclipse-plugin, eclipse-jdt

Какво е необходимо, за да получите класове, предоставени чрез обичай контейнер за класически път, видим при завършването на кода?

Успешно изпълних обичайконтейнер classpath, който добавя библиотеки към проект. Добавя всички буркани в конкретна папка към пътя за изграждане, освен ако в работното пространство няма проект със същото име, в който случай е посочен проектът.

Сега очевидно изглежда, че работи, когато споменавамклас от един от тези буркани, кодът се компилира, но не виждам класа в предложенията за завършване на код. Когато имам правилния проект в работното си пространство, тогава виждам такава класа в завършването на кода.

Направих следните стъпки, за да постигна това, докато отчасти вземах предвид урок от IBM:

  • Внедрете ClasspathContainerInitializer
  • Внедрете ClasspathContainerPreferencePage за допълнителна конфигурация
  • Изпълнете IClasspathContainer

Когато добавя контейнера към проект, виждам бурканчетата в пакета explorer, както го очаквах. (Налице е само ако няма наличен съответстващ проект, а регистрирането показва очакваните резултати)

Мога да използвам класове от буркани, интегрирани чрезконтейнер за класически път без грешки на компилатора, те просто не са налице за завършване на код и в "Бързи поправки", за да добавите правилния импорт. Така че предполагам, че може би просто пропуснах да допринеса за някакво разширение.

Отговори:

1 за отговор № 1

Отговорът основно е: Не е нужно да правите нищо повече от изпълнението на трите части. Но трябва да го направите по правилния начин.

Най- ClasspathContainerPreferencePage да подготви контейнера за добавяне към проекта.

Най- ClasspathContainer като субект, който се добавя към проекта. За това е наистина важно да приложим всички необходими методи правилно. За мен проблемът беше, че върнах грешна постоянна стойност в метода getKind (), Вместо да се връщате IClasspathEntry.CPE_CONTAINER Трябваше само да го използвам IClasspathContainer.K_APPLICATION и завършването на кода е изработено от полето:

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

И накрая ClasspathContainerInitializer за подготовка и актуализиране на контейнера.


0 за отговор № 2

Използвам Eclipse Luna и Eclipse прави автодовършване дори от външни JAR. Трябва да обмислите надстройването до Luna, ако вече не сте го виждали и решава проблема ви