/ / Dlaczego klasy przechowywane w jarach dodanych przez niestandardowy kontener ścieżki klas nie są dostępne do uzupełniania kodu? - java, eclipse, eclipse-plugin, eclipse-jdt

Dlaczego klasy przechowywane w jarach dodanych przez niestandardowy kontener ścieżki klasowej są niedostępne do uzupełniania kodu? - java, eclipse, eclipse-plugin, eclipse-jdt

Co jest konieczne, aby uzyskać klasy udostępnione przez niestandardowy kontener ścieżki klas widoczny w zakończeniu kodu?

Pomyślnie zaimplementowałem niestandardowypojemnik classpath, który dodaje biblioteki do projektu. Dodaje wszystkie słoiki w określonym folderze do ścieżki budowania, chyba że w obszarze roboczym jest projekt o tej samej nazwie, w którym to przypadku odwołuje się projekt.

Teraz to najwyraźniej działa, kiedy mam na myśliklasa z jednego z tych słoików, kod kompiluje, ale nie widzę klasy w podpowiedziach dotyczących uzupełniania kodu. Kiedy mam prawidłowy projekt w moim obszarze roboczym, widzę taką klasę w zakończeniu kodu.

Zrobiłem następujące kroki, aby to osiągnąć, podczas gdy częściowo rozważałem samouczek od IBM:

  • Zaimplementuj ClasspathContainerInitializer
  • Implementacja ClasspathContainerPreferencePage dla dodatkowej konfiguracji
  • Zaimplementuj IClasspathContainer

Kiedy dodałem kontener do projektu, widzę słoiki w eksploratorze pakietów, tak jak tego oczekiwałem. (Słoik jest dostępny tylko wtedy, gdy nie ma odpowiedniego projektu, rejestrowanie pokazuje oczekiwane wyniki)

Potrafię używać klas z słoików zintegrowanych przezŚcieżka klasy classpath bez błędów kompilatora, po prostu nie są dostępne do uzupełniania kodu oraz w Szybkich poprawkach, aby dodać właściwy import. Sądzę więc, że może po prostu przegapię przyczynienie się do jakiegoś punktu rozszerzenia.

Odpowiedzi:

1 dla odpowiedzi № 1

Odpowiedź w zasadzie brzmi: nie musisz robić nic więcej niż wdrażanie trzech części. Ale musisz to zrobić we właściwy sposób.

The ClasspathContainerPreferencePage przygotować pojemnik do dodania go do projektu.

The ClasspathContainer jako podmiot dodający do projektu. W tym przypadku naprawdę ważne jest właściwe wdrożenie wszystkich potrzebnych metod. Dla mnie problemem było to, że zwróciłem błędną stałą wartość w metodzie getKind (). Zamiast wracać IClasspathEntry.CPE_CONTAINER Po prostu potrzebowałem użyć IClasspathContainer.K_APPLICATION a kodowanie zakończyło się po wyjęciu z pudełka:

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

I wreszcie ClasspathContainerInitializer do przygotowania i aktualizacji pojemnika.


0 dla odpowiedzi nr 2

Używam Eclipse Luna, a Eclipse wykonuje kod autouzupełniania nawet z niestandardowych zewnętrznych plików JAR. Powinieneś rozważyć uaktualnienie do Luny, jeśli już go nie widziałeś i zobaczysz, że rozwiązuje twój problem