Tworzenie pakietów JAR Załó my, e mamy trzy klasy. Dwie z nich

advertisement
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.
Download