2011-01-20 18 views
5

Mam kilka plików JAR (z projektu maven2) i maven raportów niektórych pakiet nie można znaleźć (org.openanzo.client.jena, aby być dokładne). Chcę zagłębić się w pliki JAR pobrane w wyniku rozwiązywania zależności maven i znaleźć pakiety, które są w ten sposób dostępne z tych plików JAR. Insights?Jak znaleźć pakiety zdefiniowane w jar?

AKTUALIZACJA: Wygląda na to, że jedynym dobrym rozwiązaniem do sprawdzenia zawartości pliku jar jest narzędzie "jar" lub można to zrobić za pomocą urządzeń IDE.

+0

co masz na myśli przez „Maven zgłasza jakiś pakiet nie można znaleźć”? Jakie polecenie próbujesz uruchomić? Jaka jest wiadomość? Czy są dostępne inne informacje? Zwykle taki błąd nie pojawia się bez kontekstu. –

+0

@Zac: Masz rację. To moja nieznajomość maven sprawiła, że ​​uwierzyłem, że problemem jest brakujący słoik. Rozwiązałem to przy okazji. Tnx do rozważenia. –

Odpowiedz

11

jar tvf filename.jar pokaże zawartość pliku jar bez konieczności jego wyodrębnienia.

Ale myślę, że może to, co naprawdę próbujesz zrobić, to znaleźć odpowiednie współrzędne dla zależności, której brakuje, ponieważ oczywiście żadne z tych, które masz teraz, nie dostarczają pakietu, którego szukasz (w innych słowa, sprawdzenie ich zawartości prawdopodobnie nie pomoże ci).

Przyznaję, że pierwsze miejsce, które chciałbym zasugerować, to Sonatype's public Nexus instance. Szukanie dla your example niczego nie zmienia. Zwykle oznacza to, że projekt nie próbuje dostać swoich rzeczy do Maven Central lub innych głównych repozytoriów (co jest w porządku), więc musisz użyć wyszukiwarki internetowej. Zwykle pierwsze dwie części pakietu informują, gdzie szukać (openanzo.org w twoim przypadku).

1

. Pliki jd to tylko skompresowane archiwa ZIP, zmień nazwę na zip, otwórz go za pomocą ulubionego programu rozpakuj i przemierzaj katalog.

Po dodaniu pliku jar do projektu zaćmienia można przechodzić przez bibliotekę w eksploratorze projektu.

HTH

9

Jeśli jesteś na systemie Linux lub Mac, można przejść do terminala u podstaw folderu zawierającego JAR i typ:

# grep -ri "org.openanzo.client.jena" * 

on powróci rekurencyjnej listę wszystkie pliki JAR zawierające nazwę tego pakietu. Jeśli zwraca 0 wyników, żaden z tych JARS nie zawiera tego pakietu.

Jeśli chcesz wykonać bardziej wyczerpujące wyszukiwanie, możesz odłączyć pliki JAR. Struktura katalogów i pliki .class będą uporządkowane według pakietów w folderach.

# jar xvf filename.jar 

Jeśli jesteś na systemie Windows można unJAR pliku JAR przy użyciu narzędzia takiego jak 7Zip.

+1

jeśli jesteś w systemie Windows, możesz użyć cygwin i linux grep :) – MartinC

0

Zakładając, że pobrano pliki jar, pliki zostaną załadowane do lokalnego repozytorium. Możesz użyć przeglądarki maven, która jest zapakowana w Eclipse do przeglądania i wyszukiwania artefaktów w twoim repozytorium (zwykle w userdir/.m2/repository)

Uwaga: Możesz eksplorować swoje repozytorium bezpośrednio, jeśli chcesz. Zrozumiesz pakiety, które zostały pobrane. Ale sugeruję użycie wtyczki.

Jeśli korzystasz z Intellij IDEA, każdy projekt zawiera drzewo o nazwie Biblioteka zewnętrzna, które pozwala wyszukiwać i eksplorować biblioteki.

2

@Carsten Nie trzeba zmieniać nazwy pliku .jar na .zip.Możesz bezpośrednio otworzyć plik jar w winzip/lub innym narzędziu zip (zakładając system operacyjny Windows)

@ ashy_32bit spróbuj użyć wtyczki "zaćmień klasy klasy" przeglądarki IBM. Prosty plugin do znalezienia zajęcia (jeśli znasz nazwę klasy)

LUB

jak Carsten zaproponował ... ustawić pliki jar jako pliki lib i ręcznie szukać go

LUB

tworzyć plik wsadowy o nazwie a.bat (gdzie masz wszystkie pliki jar bezpośrednio pod jednym folderze) i wklej następujący 4 linie

@ECHO OFF 
dir /b *.jar > allJarFilesList.txt 
FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt 
FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B 

zanotować „CO m/sun "w ostatniej linii ... to jest zakodowane, możesz także przekazać jako argument ...

Wiem, że jest to bardzo prosta forma i można ją ulepszyć" dużo "jak patrzenie w różne katalogi.

nadzieję, że to pomaga :-)

Powiązane problemy