Tworzenie pakietów JAR Załóżmy, że mamy trzy klasy. Dwie z nich będą w pakiecie JAR i stanowią naszą mini-bibliotekę. Oto ich przykładowa zawartość: W pliku Gracz.java package toto.ver1; class Gracz{ int [] liczby; Gracz(){} public void losujLiczby(int ile, int max){} } W pliku Gra.java package toto.ver1; public class Gra{ Gracz[] gracze; int liczbaSymulacji; public Gra(){} public void symulujGre(int liczbaPowtorzen){} } Klasa Gra jest publiczna aby można ją było użyć poza pakietem. Klasa Gracz będzie używana wyłącznie przez klasę Gra znajdującą się w tym samym pakiecie, więc klasa Gracz może pozostać z dostępem pakietowym. Obie te klasy są w pakiecie toto.ver1, zatem muszą znajdować się w katalogu toto/ver1. Zatem przykładowa zawartość katalogu Pojekt1 jest następująca: Projekt1/Start.java Projekt1/toto/ver1/Gra.java Projekt1/toto/ver1/Gracz.java Aby skompilować pliki Gra.java oraz Gracz.java w katalogu ver1 wykonujemy: javac *.java lub w katalogu Projekt1 javac toto/ver1/*.java Po pomyślnej kompilacji ustawiamy się w katalogu Projekt1 i tworzymy plik jar: jar –cvf totolib.jar toto/ver1/*.class Poleceniem tym tworzymy plik jar, który zachowuje strukturę katalogów (tzn. /toto/ver1/) i dodaje do archiwum jar tylko pliki z rozszerzeniem class. Pozwala to na użycie tej biblioteki (totolib.jar) do kompilacji i uruchamiania programów korzystających z niej bez udostępniania źródeł. Aby to przetestować załóżmy, że mamy plik Start.java import toto.ver1.*; public class Start{ public static void main(String[] args){ //odczytanie parametrow… Gra gra = new Gra(); gra.symulujGre(100); } } Aby przekonać się, że istotnie korzystamy z pliku totolib.jar, tworzymy nowy katalog i przegrywamy tam Start.java oraz totolib.jar, np. proba/Start.java proba/totolib.jar Kompilujemy plik Start.java javac –cp totolib.jar Start.java Opcja –cp (lub –classpath) podaje dodatkowe ścieżki do bibliotek, z których kompilator powinien skorzystać. Uruchomienie programu odbywa się za pomocą polecenia: java –cp totolib.jar Start Jeśli java nie widzi klasy Start, należy wskazać dokładnie jej miejsce, czyli bieżący katalog, który oznacza się zawsze kropką. Podajemy wiec dwie ścieżki (oddzielone dwukropkiem) do miejsc gdzie należy szukać klas – bieżący katalog oraz plik totolib.jar java –cp .:totolib.jar Start Jeśli biblioteka jest używana częściej, można na stałe dopisać ją do ścieżki poszukiwań javy czyli do zmiennej systemowej CLASSPATH Np.: CLASSPATH=$CLASSPATH:/home/uck-prac/beretam/toto/proba/totolib.jar export CLASSPATH Te dwie linijki można również dopisać w pliku .bash_profile we własnym katalogu głównym, wtedy ścieżka do totolib.jar zostanie dopisana do CLASSPATH przy każdym logowaniu. Wtedy można już napisać java Start i program powinien uruchomić się bez problemu, nawet jeśli totolib.jar jest w innym katalogu.