Laboration 10 - NetBeans Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass i NetBeans. Uppgift 1 Uppgift 1 går ut på att skapa ett NetBeans-projekt för föreläsningar och laborationer på kursen. Detta förutsatt att du inte redan har gjort detta. Slutresultatet ska vara ett projekt med lämpligt namn, t.ex. DA129A. I projektets src-katalog ska ett antal kataloger finnas, nämligen f4, f5,, f10 och laboration4, laboration5,, laboration9. Och i varje katalog ska de java-filer som hör till respektive föreläsning / laboration finnas. Genomförande Starta NetBeans. Skapa ett projekt med lämpligt namn, t.ex. DA129A. Leta upp src-katalogen som tillhör projektet. Skapa katalogerna f4 f10. Kopiera källkodsfilerna från kurssidan till respektive katalog. Kompilera och testkör klasserna. Skapa sedan katalogerna laboration4 laboration9 i src-katalogen. Placera filer från kurssidan under respektive katalog (det finns ofta någon fil som tillhör laborationen). Dessa filer har korrekt package-kommand. Placera dina egna lösningar på laborationerna under respektive katalog. Det är mycket möjligt att du måste lägga till package-kommando / ändra i package-kommandot. T.ex. för lösningar i laboration 4 ska package-kommandot vara: package laboration4; Kompilera och testkör klasserna. Nu har du ett projekt som kan växa med resten av kursen. DA129A, Programmering 1 1
Uppgift 2 En JAR-fil (arkiv-fil), Java archive file, kan innehålla alla de filer som behövs i ett program. JAR-filen kan dessutom göras körbar. Exekveringen av programmet startar då användaren dubbelklickar jar-filen. Uppgift 2 går ut på att skapa en jar-fil. Arkiv-filen ska innehålla paketet resurser. Sedan ska jar-filen användas från ett program i NetBeans. Göra en jar-fil Skapa ett nytt projekt som heter SkapaArkiv. Med hjälp av Utforskaren ska du i projektets src-katalog skapa en ny katalog. Ge katalogen namnet resurser. I resurser ska du placera Tidtagare.java från föreläsning 8. Du måste ändra det inledande package-kommandot i Tidtagare.java till package resurser; Klassen Tidtagare tillhör alltså i paketet resurser. Kompilera Tidtagare.java. Nu bildas i vanlig ordning filen Tidtagare.class i katalogen build/classes/resurser. Det är katalogen resurser med innehåll som ska lagras i en jar-fil. Om kompileringen gick bra så gå vidare till nästa punkt. Högerklicka projektet (i projektfönstret) och välj Build. Nu kan du med hjälp av Utforskaren se att katalogen dist bildats i projektkatalogen. I dist hittar du filen SkapaArkiv.jar. Kopiera filen och placera kopian i t.ex. C:\java. Ändra filens namn till Resurser.jar. Testa jar-filen i ett annat projekt Nu ska innehållet i Resurser.jar användas i ett program som är i ett annat projekt. Skapa projektet AnvandaArkiv. Skapa paketet laboration10 i projektet. Göra paketet resurser tillgängligt i projekt I projektet ska Resurser.jar kunna användas. För detta krävs några inställningar: 1. Högerklicka projektet (i projektfönstret) och välj Properties Libraries Add JAR/Folder. 2. Bläddra fram till Resurser.jar och klicka sedan på Öppna. 3. Klicka på OK. Nu kan innehållet i Resurser.jar användas av program i projektet AnvandaArkiv. 2
Använda klassen Tidtagare i arkivet Resurser.jar Klassen UppskattaTid i föreläsning 8 använder klassen Tidtagare. Kopiera filen UppskattaTid.java till paketet laboration10. Glöm inte att ändra package-kommandot i UppskattaTid.java till package laboration10; I paketet laboration10 finns inte någon klass med namnet Tidtagare. Därför blir det en del rödmarkeringar i källkoden i UppskattaTid. Men klassen Tidtagare finns i paketet resurrser i akrivfilen Resurser.jar. Och innehållet i Resurser.jar är tillgängligt efter punkterna 1 och 2 ovan. Nu ska du importera paketet resurser i filen UppskattaTid.java. Importen ska som vanligt vara efter package-kommandot. package laboration10; import resurser.*; När du lagt till ovanstående 2 rader i UppskattaTid.java är det dags att köra programmet. Uppgift 3 Uppgift 3 går ut på att göra en körbar jar-fil. Vi tänker oss att den körbara jar-filen utgör inlämning på Inlämningsuppgift 0. Skapa projektet DA129AP0. I projektet ska du skapa paketet p0. Skapa klasserna HelloWorld och HelloMain i paketet p0. Dessa två filer utgör de filer som ska lämnas in. Men läraren vill dessutom att ett körbart program ska lämnas in. package p0; import javax.swing.*; public class HelloWorld { private String hello; public HelloWorld() { this.hello = "Hello, world"; public HelloWorld( String anotherhello ) { this.hello = anotherhello; public void sayhello() { javax.swing.joptionpane.showmessagedialog( null, this.hello ); ----------------------------------------------------------------- package p0; public class HelloMain { public static void main( String[] args ) { HelloWorld hw = new HelloWorld( "Hej, världen"); hw.sayhello(); Testkör HelloMain så att programmet fungerar. Ett fönster liknande fönstret till höger ska visa sig. 3
Skapa en jar-fil Nu ska du skapa en jar-fil på samma sätt som i Uppgift 2, dvs. högerklicka projektet och välja Build. Kontrollera att DA129AP0.jar har skapats. Filen DA129AP0.jar är en vanlig zip-fil. Det innebär att du kan studera innehållet med hjälp av ett arkiv-program t.ex. WinZip. Döper du om filen till DA129AP0.zip så kan du öppna den med Komprimerade mappar (se figur nedan). Som du ser innehåller arkivet två kataloger, META-INF och p0. Katalogen p0 innehåller klass-filerna som tillhör programmet. Katalogen META-INF innehåller text-filen MANIFEST.MF. Genom att packa upp denna fil, göra ett litet tillägg och sedan placera den nya versionen i arkivfilen så kommer den vara körbar. Göra jar-filen körbar 1. Packa upp filen MANIFEST.MF. Filen är en helt vanlig text-fil men med suffixet MF. 2. Öppna filen i t.ex. Anteckningar. Filens innehåll är ungefär det du ser i figuren nedan (kan variera med version på NetBeans). Innehållet spelar inte så stor roll. 3. Lägg till en rad överst i textfilen (OBS! Det är skillnad på stora och små bokstäver): 4. Spara filen. 5. Ersätt filen MANIFEST.MF i arkivfilen med den nya versionen. Om du döpt om arkivfilen till DA129AP0.zip så ska du nu ändra tillbaka så att filen heter DA129AP0.jar. Nu ska du dubbelklicka DA129AP0.jar för att kontrollera att den är körbar. Om den inte är det så har du förmodligen skrivit fel i raden du la till i MANIFEST.MF. 4
Anpassa filen vid inlämning Den körbara jar-filen, vilken du nyss konstruerat, innehåller endast de filer som krävs för att exekvera programmet (klass-filer). När du lämnar in dina lösningar på en uppgift så ska du även lämna in andra filer, t.ex. källkodsfiler. Kopierar src-katalogen från projektet till arkivfilen. I ovanstående exempel innebär det att arkivfilen kompletteras med src-katalogen vilken innehåller katalogen p0. I katalogen p0 finns källkodsfilerna. Andra filer som ska redovisas kan på samma sätt läggas till i arkivfilen. Extrauppgift I dokumentet JSE.pdf på kurssidan beskrivs vad som behövs för att bl.a. köra jar.exe. Detta är: Ett JDK ska vara installerat på datorn. Detta måste vara fallet eftersom du kompilerar och exekverar java-program på datorn. Eventuellt måste du ändra i PATH respektive CLASSPATH (se JSE.pdf). jar.exe måste hittas från kommandofönstret. Öppna ett kommandofönster, skriv jar och tryck på RETURN. Om jar hittas får du en del info om jar. Om jar inte hittas måste du ändra i PATH-variabeln (se JSE.pdf). Utgå från JSE.pdf och de filer du redan har skapat i laborationen för att skapa jar-fil / körbar jar-fil. 5