Gdy zaczynałem pisać jKatalog wiedziałem, że chcę aby program automagicznie potrafił aktualizować się do najnowszej wersji. Na początku obawiałem się jak wytrzyma to mój serwer i czy wykupiony roczny limit transferu nie zostanie zjedzony w ciągu miesiąca. Na szczęście program, który został napisany w Javie jest bardzo lekki – do niedawna to było około 200 kilobajtów, w ostatniej wersji trochę ponad 400 kilo. Tworząc swingowy interfejs graficzny w Netbeans trzeba zwykle z korzystać z dodatkowych bibliotek, które potem trzeba dołączać do własnej aplikacji. W przypadku ostatniej wersji jKatalogu wygląda to tak, że jest jKatalog.jar i katalog lib, a w nim dodatkowe liby – appframework-xx.jar, swing-layout-xx.jar oraz swing-worker-xx.jar. Jakie są to liby tak naprawdę zależy od użytej wersji Netbeansów i wybranych ustawień formatki. Gdy powstaje nowa wersja jKatalogu w oparciu o nowego NB to oprócz aktualizacji głównego programu trzeba by też aktualizować te biblioteki. Chciałem rozwiązać to prościej – wszystkie dodatkowe biblioteki wrzucić do głównego jar’a. No cóż, jak zacząłem czytać jak to należałoby zrobić według kilku mądrych głów, to odechciało mi się – to nie było proste. Wymyśliłem pewien trick, takie wstrzyknięcie wymaganych bibliotek do gotowego programu:
- napisać normalnie program w NB
- gdy program już gotowy do publikacji uruchomić midnight commander (w Ubuntu poprzez mc)
- na jednym panelu „wejść” w jar programu
- na drugim panelu „wejsć” w jar biblioteki
- skopiować „katalog główny” ze skompilowanymi klasami do „katalogu głównego” programu
- powtórzyć to dla wszystkich bibliotek
- i tyle!
Działa od razu po zamknięciu jar’a naszego programu. Można go uruchomić gdziekolwiek, nie będzie już wymagał dodatkowych bibliotek. Waga pliku programu siłą rzeczy musiała powiększyć się ![]()
Dokładnie widać to na filmiku:


