02121  Ingeniørarbejde - Softwareteknologi - Generering af jar-filer
Technical University of Denmark DTU
02121 Ingeniørarbejde - Softwareteknologi        Januar 2010
Generering af jar-filer


Kort om jar-filer

Filtypen .jar er Javas eget format til kompakt sammenbundtning af et antal filer - typisk alle filer der hører til et Java program eller alle filer i et klasse-bibliotek. Der kan være tale om både Java-filer med kildetekst, oversatte klassefiler og andre filer, fx. billeder og konfigurationsfiler.

En jar-fil er faktisk en zip-fil, men med visse særlige konventioner. Fx. kan en jar-fil indeholde en såkaldt manifest-fil, der fortæller, hvilken klasse, der udgør hovedklassen (dvs. hvis main-metode skal kaldes initielt).

Jar-filer skabes og læses med kommandoen jar, hvis syntaks og options for en del er arvet fra den klassiske Unix-kommando tar (tape archive).

Generering i Eclipse

Eclipse har en guide, der hjælper med at eksportere filer fra et projekt til en jar-fil. Her er en kort beskrivelse af de nogle vigtigste punkter i denne proces:

  1. I navigator-panelet markeres det aktuelle projekt.
  2. Med højreklik på projektet eller i File-menuen vælges Export ....
  3. I første skærmbillede [Select] vælges export-typen Java >> JAR file.
  4. I næste skærmbillede [JAR file specification] sikres at alle relevante filer er markeret til gemning. Desuden bør følgende bokse være markeret:

    Export generated class files and resources
    Export java source files and resources

    [Bemærk at output-kataloget hvor klassefilerne ligger (typisk bin) ikke optræder eksplicit.]

    Husk at markere evt. kataloger med filer, billeder osv. Se mere om tilgangen til sådanne ressourcer her.

    Vælge passende destination og navn for jar-filen.

    Af Options bør kun Compress the contents of the JAR file være markeret.

    Undlad at trykke Finish endnu, men gå videre til næste skærmbillede.

  5. I skærmbilledet [JAR packaging options] kan det være nødvendigt at markere boksen

    Export class files with compile warnings

  6. I det sidste skærmbillede [Jar manifest specification] angives i feltet Main, hvilken klasse der er hovedklassen. Browse-knappen kan bruges til at finde de klasser, der har en main-metode.
  7. Tryk Finish.
  8. Test at jar-filen kan køre lige-ud-af-krukken som beskrevet under praktiske forhold

Manuel generering

  1. Lav et katalog (= "mappe", "folder", eng. directory), hvorunder al kode til jeres program skal lægges [i underkataloger svarende til jeres pakke-struktur]. Dette katalog kaldes her rod-kataloget. Underkatalogerne skal inkludere selve Java-klasserne (.java), de oversatte klasser (.class) og eventuelle hjælpefiler (tekst- og billedfiler mv.). Hvis I benytter klasser fra ccs-pakken, skal denne også ligge (udpakket) under rod-kataloget.
  2. I kan tjekke om programmet er klar til at blive pakket ned ved fra rod-kataloget at udføre:
    java -classpath . Main                [Bemærk punktummet efter -classpath]
    hvor Main er det fuldt kvalificerede navn på den klasse, der starter jeres værktøj. Hvis fx hovedklassen hedder Tool og ligger i pakke-kataloget xyz under rod-kataloget, skal Main angives til xyz.Tool (uden .java eller .class).
  3. I rod-kataloget oprettes endvidere en tekst-fil, fx maininfo.txt, der indeholder en enkelt linie:
    Main-Class: Main
    hvor Main er navnet på hovedklassen som beskrevet ovenfor.

    Det er vigtigt at linien afsluttes med et linieskift.

  4. Stil jer I rod-kataloget og udfør kommandoen:
    jar cvmf maininfo.txt name.jar *
    hvor maininfo.txt er ovennævnte fil og name er er det ønskede navn. Dette skaber en jar-fil med navnet name.jar indholdende alle filer i rod-kataloget incl. underkataloger og deres indhold. (Se evt. en forklaring af parametrene i beskrivelsen af jar-kommandoen.

  5. Hvis programmet skal benytte bestemte filer (se ressourcer), skal disse også ligge i rodkataloget så de bliver pakket med ned.
  6. Test at jar-filen kan køre lige-ud-af-krukken som beskrevet under praktiske forhold


Hans Henrik Løvengreen, Jan 7, 2010