Innholdsoversikt for programutvikling
Vi vet at et større javaprogram består av mange filer. Det som behøves for å kjøre programmet,
er class
-filene, samt eventuelle tilhørende bildefiler, lydfiler, etc. Men dersom vi
skal distribuere dette til en som skal kunne kjøre programmet, er det ønskelig at alt kan
leveres i form av én enkelt kjørbar fil. Det som har vært tradisjonelt for programmer, er å få dem
i form av en såkalt exe-fil. Men problemet er at en slik exe-fil vil være tilpasset ett spesielt
operativsystem og ikke vil la seg kjøre på et annet operativsystem. Det som fra starten av har vært
grunntanken bak Java, er at den samme koden skulle la seg kjøre på alle mulige plattformer, så
sant som Javas kjøresystem (jre-pakken) var installert. Dette opplegget lar seg ikke realisere
med tradisjonelle exe-filer. Derfor måtte man finne på noe annet. Det som ble funnet på, var
det som kalles jar-filer: Java Archive files.
JAR-filer er komprimerte filer der det brukes samme
komprimeringsformat som i zip-filer. Jar-filer kan inneholde både
class
-filer, java-filer og andre filtyper,
slik som bildefiler og lydfiler. Standardinstallasjonen for Java (jdk-pakken) inneholder et verktøy
for å generere jar-filer. Det er jar
-programmet (jar.exe
) som befinner seg i
jdk/bin
-katalogen. Det kan kjøres på konsollnivå. Sammen med selve jar
-kommandoen
må det da angis en del opsjoner og filnavn. Dersom man ønsker å gå fram på denne måten, kan man finne
nærmere beskrivelse av framgangsmåten for eksempel i The Java Tutorials:
Packaging Programs in JAR Files.
I programutviklingsverktøy slik som Eclipse og NetBeans er det bygget inn verktøy for generering av jar-filer. Disse
bruker selvsagt i sin tur de underliggende verktøyene fra jdk-pakken. Nedenfor er det forklart nettopp
hvordan man kan generere jar-filer i Eclipse og i NetBeans.
I studentsammenheng er det aktuelt å generere jar-filer i forbindelse med innlevering av
obligatoriske oppgaver og prosjektarbeid. Det vi da ønsker å generere, er vanligvis en kjørbar
jar-fil, det vil si som virker på tilsvarende måte som en exe-fil.
Merknad Beskrivelsen nedenfor er testet for Eclipse 3.4.0 og javaversjon 1.6. Den er foreløpig ikke testet for nyere versjoner av Eclipse og Java.
Vi skal se nærmere på hvordan man kan generere kjørbare jar-filer i Eclipse. Veiledning for dette kan man finne
i under Help-menyen til Eclipse. Nedenfor er det gjengitt noe av det som finnes der.
De første skrittene av framgangsmåten er beskrevet i følgende punkter, som finnes under
Java Development User Guide > Tasks > Creating JAR Files
:
To create a new JAR file in the workbench:
Gå fram slik det er beskrevet i punktene ovenfor. Men i punkt 3, så velg JAR File
istedenfor
Runnable JAR File
. Velger du det siste, så vil du vanligvis i jar-fila få med en god del mer enn
det som er nødvendig. Ved innlevering av oppgaver og prosjektoppgaver her på skolen, skal du levere java-filene
i tillegg til class-filene som er nødvendig for å få en kjørbar jar-fil. For å oppnå dette, må du under
punkt 5 krysse av både for Export generated class files and resources og for
Export Java source files and resources. For øvrig må du under punkt 6 velge hvor
du vil plassere den jar-fil som blir generert og hva den skal hete. Som etternavn (file extension) må du
bruke .jar
. For øvrig er det for jar-filer vanlig å bruke bare små bokstaver i filnavnet.
Under punkt 10 skal du nå ikke velge
Finish to create the JAR file immediately,
men isteden velge
Next to use the JAR Packaging Options page to set advanced options,
create a JAR description, or change the default manifest.
Veiledningen for det vinduet du da får opp er som følger:
Du trenger vanligvis ikke å gjøre noe annet i dette vinduet enn at du under punkt 7 på lista ovenfor velger Next. (Du skal altså ikke velge Finish.) Til det nye vinduet du får opp har vi følgende veiledning:
You can either define the important parts of the JAR file manifest directly in the wizard or choose to use a manifest file that already exists in your workbench.
You can use an existing manifest file that already exists in your workbench.
Det eneste punktet som er aktuelt her, er punkt 7 under Creating a new manifest, der du skal angi hvilken klasse som inneholder
programmets main
-metode. Dette er nødvendig for å få en kjørbar jar-fil. Angi klasse ved
å klikke på Browse...-knappen bak tekstfeltet for Main class:
og klikk
på riktig klasse. Dermed er det bare å gjøre det som står i punkt 8 og alt er klart. (Punktene under
Using an existing manifest trenger du ikke bry deg om.)
Vi skal ta for oss hvordan du i NetBeans kan generere en kjørbar jar-fil. Det kan gjøres på litt forskjellige måter, men det greieste er at man først utvikler programmet på vanlig måte i NetBeans og til slutt oppretter et eget NetBeans-prosjekt på grunnlag av den ferdige koden. Det er denne framgangsmåten som blir beskrevet i det følgende.
Det viser seg at framgangsmåten som er beskrevet i det følgende ikke virker riktig når man bruker NetBeans 7.0 eller nyere sammen med jdk 1.7.0. Men den virker riktig med NetBeans 7.0 eller nyere og jdk 1.7.0_03 eller nyere, det vil si oppdatering 3 eller nyere av Java 7.
Vi forutsetter at du allerede har utviklet et program i NetBeans og skal generere en kjørbar jar-fil på grunnlag av dette. Gå da fram på følgende måte:
Det nye prosjektet vil nå på vanlig måte åpne seg i NetBeans-vinduet og finnes under prosjektoversikten. Du vil på vanlig måte kunne se på hvilke filer som tilhører prosjektet og hva de inneholder. Neste skritt er nå
For at generering av kjørbar jar-fil skal bli vellykket, er det nødvendig å foreta et par spesifiseringer:
main
-klasse for prosjektet. Dette er nødvendig for å få en kjørbar jar-fil.Som nevnt foran, er det nødvendig å bruke NetBeans 7.1 sammen med oppdatering 3 av Java 7 for at det skal virke riktig. Sannsynligvis vil det også gå bra med nyere versjoner av NetBeans og/eller Java. For å sjekke at du har riktig javaversjon gjør du følgende:
main
-klasse for prosjektetFor å få en jar-fil som er kjørbar på den måten at programmet vil starte opp
å kjøre når du dobbeltklikker på filnavnet, så er det nødvendig å spesifisere hva som
er main
-klasse for programmet. (Opplysninger om dette vil bli lagt inn i JARs såkalte
manifestfil.) For å sette main
-klasse for prosjektet gjør du følgende:
main
-metoden for programmet og så klikke på knappen
Select Main Class for å velge denne.Å bygge prosjektet vil si å kompilere alle kildefiler og generere jar-fil som inneholder all nødvendig informasjon for å kunne kjøre programmet. For å bygge prosjektet gjør du følgende:
Ved bygging av prosjektet skjer følgende:
build
og dist
blir generert under prosjektkatalogen
(som heretter blir kalt PROSJEKTHJEM)..class
-filer som blir plassert
i katalogen PROSJEKTHJEM/build
.PROSJEKTHJEM/dist
generert en jar-fil
for programmet.lib
under dist
. Bibliotekene
blir kopiert inn i dist/lib
.main
-klasse og eventuelle biblioteker som er på prosjektets classpath.
Merknad: Dersom du ønsker å se på innholdet i manifestfila, kan du gjøre
følgende etter at du har bygget prosjektet: I vindusfeltet som inneholder prosjektlista
i NetBeans-vinduet, klikker du på fliken Files. Naviger deg til jar-fila under
dist
-katalogen og ekspander noden for jar-fila. Ekspander deretter
META-INF
-katalogen og dobbelklikk på MANIFEST.MF
slik at
du kan få sett på hva den inneholder.
Etter at du har gjennomført prosedyren som er beskrevet ovenfor med å generere jar-fil, kommer det spennende øyeblikket med å teste om den virker. Vi prøver først å kjøre den fra NetBeans-vinduet. Det får du gjort ved å høyreklikke prosjektnoden i lista over prosjekter. (Dersom du har vært inne på Files for å se på innholdet i manifestfila, så må du først gå tilbake til Projects.) Så velger du alternativet Run. Da skal programmet kjøre!
Når du har fått jar-fila til å kjøre fra NetBeans-vinduet, kommer turen til å teste
den utenfor dette. Prøv først å bruke maskinens filutforsker til å manøvrere deg fram til
jar-fila som skal befinne seg i katalogen PROSJEKTHJEM/dist
. (Se
ovenfor angående PROSJEKTHJEM
.) Dobbelklikk på jar-fila.
Er alt riktig, skal nå programmet kjøre.
Når du har fått kontrollert at jar-fila kjører programmet også når du er utenfor NetBeans-vinduet, skal du kunne kopiere den til hvor som helst eller sende den til hvem du vil som et kjørbart program. Forutsetningen er at Javas kjøresystem jre i en tilstrekkelig ny versjon er installert på riktig måte på vedkommende maskin.
Obs! Jar-fila som er opprettet på måten som er beskrevet ovenfor vil ikke inneholde programmets kildefiler (java-filene). Ved innlevering av programmer for godkjenning eller sensur må du derfor i tillegg til den kjørbare jar-fila også levere java-filene, slik at den som skal vurdere programmet ditt også har muligheter til å se på kildekoden.
Copyright © Kjetil Grønning og Eva Hadler Vihovde, revidert 2012