2011-11-28 13 views
64

Tak więc będę używał Java Web Start do wdrożenia aplikacji java. Podczas eksportowania do Runnable Jar istnieją trzy opcje w Eclipse Helios.Jaka jest różnica między opcjami obsługi uruchamianej biblioteki jar?

  • Wyciąg wymagane biblioteki w JAR
  • wymagane
  • opakowania bibliotek do JAR
  • Kopiowanie wymagane biblioteki w podkatalogu obok słoika.

Jakie są różnice i jak wpłyną one na mój plik .jnlp?

Jeśli jest to pojedynczy słoik, czy nie jest to łatwiejsze, ponieważ nie musiałbym pisać wszystkich różnych ścieżek do wszystkich bibliotek, których używa?

Jeśli wystąpią zmiany zarówno w bibliotece, jak i w aplikacji, jeden słoik byłby lepszym rozwiązaniem? Czy potrzebowałbym <jar href=''> dla każdej z bibliotek?

Należy również pamiętać, że muszę korzystać z bibliotek natywnych, takich jak pliki .dll i .so.

Odpowiedz

115
  1. Extract wymagane biblioteki w JAR - wyodrębnia rzeczywiste .class pliki z bibliotek twoi używa aplikacji i umieszcza te .class plików wewnątrz runnable JAR. Tak więc działający plik JAR nie tylko będzie zawierać pliki .class aplikacji, ale także pliki .class wszystkich bibliotek używanych przez aplikację.

  2. opakowania wymaganych bibliotek do JAR - Umieszcza rzeczywistej pliki jar bibliotek do swojego runnable JAR. Zwykle plik JAR w pliku JAR nie może zostać załadowany przez maszynę JVM. Ale Eclipse dodaje specjalne klasy do działającego JAR, aby było to możliwe.

  3. skopiować wymagane biblioteki w podkatalogu obok JAR - Utrzymuje słoiki bibliotecznych całkowicie odrębne od runnable JAR, więc runnable JAR będzie zawierać tylko .class pliki aplikacji.

Opcja nr 2 to wygodne, ponieważ pakiety wszystko zgrabnie w jednym JAR i utrzymuje słoiki bibliotecznych oddzielona od aplikacji .class plików.

Jednak wadą pakowania wszystkiego wewnątrz pojedynczego pliku JAR (opcje nr 1 i nr 2) jest to, że po aktualizacji aplikacji użytkownik będzie musiał pobrać więcej danych, aby zaktualizować aplikację. Jeśli pliki JAR są przechowywane oddzielnie, użytkownik musiałby pobrać tylko plik JAR zawierający kod aplikacji zamiast pojedynczego, masywnego pliku JAR zawierającego kod aplikacji i z całego kodu biblioteki.

+0

+1 Dziękuję bardzo szczegółowe odpowiedzi. – KJW

+0

Ciekawy, a co dopiero tworzenie słoika, który nie jest możliwy do uruchomienia? czy jest jakaś różnica? – KJW

+8

@KimJongWoo Możesz "uruchomić" działające pliki JAR, takie jak to 'java -jar myjar.jar', ponieważ JAR definiuje położenie metody' main() 'w jej pliku" META-INF/MANIFEST.MF ". Ustawienie "Główna klasa" w tym pliku definiuje klasę, która ma metodę 'main()'. "Normalne" JAR-y nie mają takiego ustawienia, więc nie można ich "wykonać" w ten sam sposób. – Michael

Powiązane problemy