Single executable jar

0

Witajcie,

W katalogu PhoneBook mam następujące pliki:

  • PhoneBook.jar (główny plik uruchamialny)
  • img.jar (zawiera wyłącznie pliki PNG)
  • itextpdf-5.1.3.jar
  • qtjambi-4.7.1.jar
  • qtjambi-win32-msvc2008-4.7.1.jar
  • sqlitejdbc-v056.jar
  • database.db (SQLite)

Potrafię na podstawie pliku PhoneBook.jar stworzyć plik PhoneBook.exe z dodaną ikoną oraz właściwościami aplikacji. W tym celu wykorzystuję narzędzie Launch4j: http://launch4j.sourceforge.net/. Program działa właściwie.

Teraz chciałbym dystrybuować całość nie w postaci 7 plików, tylko jako single executable file wraz z plikiem bazodanowym. W związku z tym muszę najpierw z 6 plików JAR stworzyć jeden a następnie skonwertować do EXE. Polecono mi użyć One-Jar z Ant ale nie wiem jak mam się za to zabrać.

Czy koś z Was ma w tym procesie doświadczenie i mógłby podzielić się ze mną wiedzą? Ewentualnie zaproponować użycie innego narzędzia mergerującego pliki jar w single executable jar file.

Z góry dziękuję za pomoc.

1

Są dwie możliwości:

  1. Jary wewnątrz głównego jara. Aby to działało trzeba mieć własny classloader. one-jar używa tego rozwiązania http://one-jar.sourceforge.net/.
  2. "Zmegowanie Jarów" - Jary to zwykłe pliki Zip. Wystarczy, że:
    -wypakujesz je wszystkie do jednego wspólnego folderu
    -upewnisz się, że plik META-INF/MANIFEST.MF jest poprawny (musi zawierać nazwę głównej klasy)
    -spakujesz ponownie do jednego pliku .zip i zmienisz rozszerzenie na .jar
    Oczywiście możesz napisać skrypt, który zrobi to automatycznie.

Jeżeli aplikacja coś zmienia w dołączonej bazie, to plik database.db nie może być w jarze (niezależnie od rozwiązania). Jar po uruchomieniu nie może się zmienić.

0

Dziękuję za odpowiedź.

A co powiesz na użycie JarJar?

http://code.google.com/p/jarjar/

Mógłbyś mi w tym pomóc? Będę dozgonnie wdzięczny.

0

Postarałem się opisać dość skrupulatnie pełne rozwiązanie problemu:

http://www.tynecki.pl/?p=1381

1 użytkowników online, w tym zalogowanych: 0, gości: 1