2011-09-30 13 views
7

Istnieje plik klasy TagAttributeInfo, który znajduje się w dwóch moich plikach jar.Jak nadać priorytet plikowi jar w ścieżce zaćmieniowej classpath?

j2ee-6.1.jar,servlet-api-2.3.jar . 

teraz muszę, że klasa należne od j2ee-6.1.jar ale w czasie wykonywania, to bierze klasę servlet-api-2.3.jar, czego nie chcesz. Czy ktoś może mi pomóc priorytetu pliku jar w ścieżce klasy, tak, że dam pierwszeństwo j2ee-6.1.jar.

Odpowiedz

13

przenieść go w celu ścieżce klas (prawy przycisk myszy na projekcie, wybierz Ścieżka budowy, a następnie Configure Build Path, a następnie Order i export)

3

Pierwszy słoik znaleziony w ścieżce klas, która ma klasę, której szuka, zostanie użyty. Możesz więc ustawić priorytety swojej klasy, umieszczając jej słoik na początku ścieżki klasy.

Jak dokładnie zrobiłbyś to w Eclipse? Nie jestem pewien, ale jest pewna lista zależności między projektami, które odpowiadają słoikom w ścieżce klas, i mam nadzieję, że możesz zamówić elementy z tej listy i włożyć swój słoik szczyt. Spróbuj go znaleźć w panelu ustawień projektu.

1

Nie wiem, czy jest to część specyfikacji, ale umieszczenie słoika o wyższym priorytecie wcześniej w ścieżce klas działa, gdy robię to w przeszłości.

1

Na pewno trzeba oba pliki jar?

W oknie dialogowym Konstrukcja ścieżki można określić kolejność przeszukiwania plików jar.

6
  • Przejdź do swojego projektu Właściwości projektu> Ścieżka budowy.
  • W zamówienia i eksport karcie, znaleźć j2ee-6.1.jar i naciśnij Up przycisk, aby przenieść go wyżej w kolejności ścieżki klasy. Kontynuuj naciskanie: Up, aż znajdzie się powyżej servlet-api-2.3.jar.
  • Na koniec naciśnij OK.
3
  1. usunąć servlet-api-2.3.jar, nie potrzebujesz go.
  2. lub przenieś j2ee-6.1.jar wyżej niż servlet-api-2.3.jar na liście lib.
1

Tylko jeden z tych słoików powinien znajdować się w ścieżce klas, aby móc kompilować klasy. Ale w czasie wykonywania słoik będzie znajdować się w ścieżce klasy serwera aplikacji, a nie będzie można go zastąpić innym.

Jeśli twój kontener jest kontenerem JEE6, to używa serwletu 3.0, a aplet-api-2.3.jar jest przestarzały i nie powinien znajdować się w ścieżce klas. Jeśli twój kontener obsługuje tylko aplet api 2.3, wtedy nie będziesz mógł używać klas ze słoika jee6 w tym kontenerze.

Powiązane problemy