Ustawianie ścieżki budowania Java

W niniejszej sekcji opisano sposób ustawiania ścieżki budowania Java.  Ścieżka budowania jest ścieżką klasy używaną do budowania projektu Java (IJavaProject).

Ścieżka klasy jest po prostu tablicą wpisów (IClassPathEntry), które opisują dostępne typy. Typy mogą zostać wyświetlone w formie kodu źródłowego lub binarnej, a kolejność wpisów ścieżki określa porządek wyszukiwania na potrzeby rozpoznawania typów podczas budowania projektu Java.

Ścieżka budowania Java jest odzwierciedlana w strukturze elementów projektu Java.  Można tworzyć zapytania o elementy główne fragmentów pakietów projektu (IPackageFragmentRoot).  Każdy wpis ścieżki klasy jest odwzorowywany na jeden lub więcej elementów głównych fragmentów pakietów, z których każdy zawiera zestaw fragmentów pakietów.

Niniejsze omówienie dotyczące ścieżki budowania nie dotyczy ścieżki środowiska wykonawczego Java, którą można zdefiniować osobno. (Informacje na temat ścieżki środowiska wykonawczego Java można znaleźć w sekcji Wykonywanie kodu Java).

Zmiana ścieżki budowania

Ścieżkę budowania projektu można zmienić programowo przy użyciu metody setRawClasspath wywoływanej dla odpowiedniego elementu Java projektu.  Następujący kod ustawia ścieżkę klasy dla zasobu projektu:

	IProject project = ... // pobieranie zasobu projektu
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

Uwaga:  Termin "surowa" ścieżka klasy jest stosowany w celu położenia nacisku na fakt, że żadne zmienne używane w danym wpisie do opisu położeń nie zostały jeszcze zinterpretowane.

Ścieżka budowania Java jest utrwalana w pliku o nazwie .classpath w strukturze plików projektu.  Dzięki temu plikowi różni użytkownicy mogą współużytkować ustawienia ścieżki budowania Java za pośrednictwem repozytorium kodu źródłowego. Ten plik nie powinien być edytowany ręcznie, ponieważ mógłby zostać uszkodzony.

Wpisy ścieżki klasy

Wpisy ścieżki klasy mogą być definiowane przy użyciu metod fabryki zdefiniowanych w klasie JavaCore.  Wpisy ścieżki klasy mogą odwoływać się do dowolnego z następujących elementów:

Wzorce wykluczenia

Do wpisu ścieżki klasy dotyczącego kodu źródłowego może zostać przypisany wzorzec wykluczania, który uniemożliwia wyświetlanie w ścieżce klasy określonych zasobów z folderu źródłowego.  Użycie wzorca umożliwia odfiltrowanie określonych części drzewa zasobów.  Ścieżka każdego wzorca wykluczenia jest określona względem wpisu ścieżki klasy i korzysta z mechanizmu wzorca podobnego do narzędzia Ant.  Wzorce wykluczenia mogą być używane do określania zagnieżdżonych folderów źródłowych, dopóki wzorzec wewnętrzny jest wykluczany przez wzorzec zewnętrzny.

Więcej szczegółowych informacji na temat wzorców wykluczenia można znaleźć w opisie metody getExclusionPatterns().

W celu określenia, czy konkretny zasób został uwzględniony w ścieżce klasy, metoda isOnClasspath interfejsu API projektu Java sprawdza najpierw wzorce włączenia i wykluczenia.

Uwagi:

Wzorce włączenia

Do wpisu ścieżki klasy źródła może również zostać przypisany wzorzec włączania, jednoznacznie definiujący zasoby, które mają być widoczne w ścieżce klasy.  Jeśli żadne wzorce włączania nie zostały określone, wpis źródła zawiera wszystkie stosowne pliki drzewa zasobów, którego węzeł główny znajduje się w ścieżce tego wpisu źródła. Określenie jednego lub większej liczby wzorców włączenia oznacza, że włączone mają być tylko określone części drzewa zasobów. Każda określona ścieżka musi być ścieżką względną i będzie interpretowana względem ścieżki tego wpisu źródła. We wzorcach plików jest rozróżniana wielkość liter. Plik zgodny z jednym lub kilkoma z tych wzorców jest włączony w odpowiednim elemencie głównym fragmentu pakietu, o ile nie jest wykluczony przez jeden lub więcej wzorców wykluczenia przypisanych do wpisu.

Patrz opis metody getExclusionPatterns(), aby zapoznać się ze składnią i semantyką wzorców ścieżek. Nieobecność któregokolwiek z wzorców włączenia jest pod względem semantycznym równoznaczna z bezpośrednim wzorcem włączenia **.

W celu określenia, czy konkretny zasób został uwzględniony w ścieżce klasy, metoda isOnClasspath interfejsu API projektu Java sprawdza najpierw wzorce włączenia i wykluczenia.

Przykłady:

Rozstrzyganie ścieżki klasy

Ponieważ zmienne i kontenery ścieżki klasy umożliwiają definiowanie dynamicznie wiązanych wpisów ścieżki klasy, interfejs API ścieżki klasy rozróżnia surową i rozstrzygniętą ścieżkę klasy.   Surowa ścieżka klasy jest to ścieżka pierwotnie ustawiona w projekcie Java przy użyciu metody setRawClasspath. Ta ścieżka może być w dalszym ciągu pobierana za pomocą wywołania metody getRawClasspath dla projektu.  Rozstrzygnięta ścieżka klasy może być pobierana przy użyciu metody getResolvedClasspath. Ta operacja wyzwala inicjowanie wszelkich zmiennych i kontenerów potrzebnych do rozstrzygnięcia ścieżki klasy.  Wiele operacji modelu Java bezpośrednio powoduje rozstrzygnięcie ścieżki budowania Java.  Na przykład obliczanie elementów głównych fragmentu pakietu projektu wymaga, aby ścieżka budowania była rozstrzygnięta.