Laboration 10 - Eclipse 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 Eclipse. Uppgift 1 Uppgift 1 går ut på att skapa ett Eclipse-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 Eclipse. 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. Markera och högerklicka src i Eclipse, välj Refresh (F5) 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; Gör Refresh 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 Eclipse. 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. Gör Refresh på src. Nu bildas i vanlig ordning filen Tidtagare.class i katalogen bin/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 Export. Markera Java JAR file och klicka på Next >. Nu kan du välja vilka paket som ska ingå i jar-filen genom att klicka på +-tecknet framför DA129A och src. Om projektet innehåller många paket så kan du här markera de paket som ska ingå. Mitt i dialogrutan kan du välja vilka typer av filer som ska ingå. Just nu nöjer vi oss med class-filer och därför ska endast det översta alternativer vara markerat. Klicka på Browse och leta dig fram till C:\java. Skriv in Resurser.jar efter filnamn och klicka på Spara. Nu bör fönstret se ut som fönstret till höger. Klicka på Finish. Nu kan du med hjälp av Utforskaren se att Resurser.jar har skapats i C:\java. 2
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. Markera Java Build Path och klicka på fliken Libraries. Klicka sedan på Add External JARs. 2. Bläddra fram till Resurser.jar och klicka sedan på Öppna. Nu ska dialogen se ut så här: 3. Klicka på OK. Nu kan innehållet i Resurser.jar användas av program i projektet AnvandaArkiv. 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. Gör Refresh på src. Det blir rödmarkeringar på paketet laboration10 och klassen UppskattaTid. Detta beror på 2 felaktigheter: 1. UppskattaTid innehåller felaktigt package-kommando. Ändra package-kommandot i UppskattaTid till package laboration10; 2. I paketet laboration10 finns inte någon klass med namnet Tidtagare. 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. Lägg till en import-sats efter packagekommandot i UppskattaTid: package laboration10; import resurser.*; När du lagt till ovanstående 2 rader i UppskattaTid.java är det dags att köra programmet. 3
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. Skapa en jar-fil Nu ska du skapa en jar-fil på samma sätt som i Uppgift 2. Men ange att jar-filen ska heta DA129AP0.jar. 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). 4
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å Eclipse). 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. 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. 5
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. Eclipse kräver endast att JRE /Java Runtime Environment) finns installerat på datorn. För att jar.exe ska finnas och kunna köras måste JDK vara installerat. Om du ska installera JDK så följ anvisningarna under INSTALLATION AV JSE 6 i 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 med hjälp av programmet jar.exe. 6