2009-11-18 14 views
8

Zastanawiam się, czy możliwe jest posiadanie aplikacji Java na komputer, podczas uruchamiania, spójrz na jakiś URL, aby sprawdzić, czy potrzebuje aktualizacji, a jeśli tak, pobierz niezbędne pliki JAR i dodaj je do ścieżki klas dla uruchomionego programu.Pobieranie plików JAR w czasie wykonywania w Javie

Jeśli są tam stare słoiki, to nie powinny być załadowane do programu ładującego klasy, w tym momencie powinny one być? Czy można je wymienić, zanim zostaną załadowane bez restartowania aplikacji?

Odpowiedz

1

Jest to możliwe, ale podatne na błąd.

Nieco bardziej czystym podejściem jest posiadanie aplikacji "Launcher", która nie polega na żadnych z aktualizowalnych JARów, aby powyższe, a następnie uruchomić rzeczywistą aplikację.

Możesz sprawdzić numer this question, aby uzyskać więcej informacji na ten temat.

11
+0

Tak zwykle robię. Mam aplikację, która normalnie byłaby jnlp, ale w tym konkretnym scenariuszu zamierzam uruchomić tę aplikację z już działającego vm i uruchomić ją w tym samym vm. Ta część działa. Problem polega na tym, że aplikacja, która uruchamia aplikację, która normalnie byłaby jnlp, nie jest łatwa do aktualizacji, a do uruchomienia drugiej aplikacji potrzebne będą niektóre słoiki zależne w jej ścieżce klas. Jnlp rozwiązałoby to wszystko, ale wymóg pojedynczego vm jest ograniczeniem. – broschb

1

Java Web Start jest prawdopodobnie najlepszym rozwiązaniem. Wymagane pliki jar powinny zostać zidentyfikowane w deskryptorze, umożliwiając zarządzanie kontrolą wersji.

Jeśli masz dynamiczną aplikację, która musi odkrywać i pobierać klasy dynamicznie w czasie wykonywania, możesz spojrzeć na Dynamic code downloading using RMI.

1

Java Web Start to dobry wybór, ale ma pewne dziwactwa. W szczególności:

  • Kod, który jest aktualizowany, musi zostać pobrany przed rozpoczęciem programu. Bardziej nowoczesne podejście może pobrać aktualizacje i zastosować je przy następnym uruchomieniu.
  • Domyślnie znajduje się wewnątrz piaskownicy. Jeśli chcesz wyjść poza to, musisz podpisać swój kod, co jest dość kłopotliwe, dopóki nie zautomatyzujesz procesu wdrażania (lub użyjesz Netbeans, który bardzo pomaga).
  • Problemy z debugowaniem nie są łatwe - tylko narzędzie umożliwia pełne śledzenie w konsoli Java.
  • Buforowanie słoików w kliencie jest podatne na błędy. Podczas aktualizacji upewnij się, że adres URL jest unikalny dla każdego komponentu wdrożenia, więc pamięć podręczna nie będzie używana.

Ale KIEDY działa, działa całkiem nieźle. Według mojej wiedzy najprostszy sposób na scentralizowaną wersję łatwo aktualizowalną dla danej aplikacji Java.

-
EDIT: Okazuje się, że „start programu i przejrzyście pobrać aktualizacje, jeśli dostępne” funkcjonalność występuje w najnowszej Java 6. Nie próbowałem tego jeszcze, ale wkrótce.

Powiązane problemy