2012-03-08 19 views
57

Chciałbym poznać różnicę między wyodrębnianiem i pakowaniem bibliotek w plik JAR z zaćmienia z tworzeniem pliku jar działającego.Różnica między wyodrębnianiem a bibliotekami pakietów w pliku JAR

Jeśli mój program (działający jar) używa innych klas, które wymagają tych zewnętrznych bibliotek (słoiki), co powinienem wybrać?

+0

możliwy duplikat [Co to jest e różnica między działającymi opcjami obsługi bibliotek słoików?] (http://stackoverflow.com/questions/8302894/what-is-the-difference-between-runnable-jar-library-handling-options) –

Odpowiedz

38

Jeśli chcesz umieścić słoiki w wygenerowanym pliku jar, możesz użyć metody pakowania. Na przykład, jeśli używasz biblioteki Apache lub innych słoików innych firm, możesz zachować te słoiki zachowane w wygenerowanym słoiku. W takim przypadku użyj opakowania. "Pakowanie potrzebnych bibliotek do pliku JAR" Opcja umieszcza klasy w pakiecie org.eclipse.jdt.internal.jarinjarloader w wygenerowanym pliku, a ten pakiet znajduje się tuż pod katalogiem głównym wygenerowanego pliku jar. Ta opcja tworzy również większy plik jar pod względem rozmiaru z powodu klas ładujących słoiki Eclipse.

Wyodrębnienie wymaganych bibliotek spowoduje umieszczenie klas bibliotek stron trzecich w pliku jar zgodnie z konwencją nazewnictwa pakietów, np. jeśli otworzysz zawartość słoika, zobaczysz kilka klas w ramach pakietów org.apache...

Główne pozycje klasy różnią się między MANIFEST.MF plików tych plików słoika:

Główne wejście klasa kiedy pakiet wymagane biblioteki:

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

Główne wejście klasa kiedy ekstrakt wymagane biblioteki :

Main-Class: YourMainClass 
+5

jaka jest przewaga lub zastosowanie potem pakować? – ctekk

+1

według opakowania, możesz załadować pliki jar do wygenerowanego słoika za pomocą klasy "JarRsrcLoader". jeśli używasz słoików innych firm i chcesz połączyć swój kod aplikacji z tymi słoikami, możesz użyć takiego narzędzia do pakowania, jak to jest w przypadku Eclipse. zobacz moją zredagowaną odpowiedź. – Juvanis

+10

Uwaga na problemy z wydajnością. Kiedyś pakowałem słoiki z bibliotekami do słoika aplikacji za pomocą jarinjarloader do wczoraj. Następnie, po aktualizacji JRE do wersji 8, aktualizacja 31 (w systemie Windows), wykonywanie mojej aplikacji stało się niesamowicie wolniejsze (do 10x). Problem został rozwiązany, gdy zdecydowałem się wyodrębnić zawartość słoików z biblioteki do mojego słoika. – Giuseppe

Powiązane problemy