CHALMERS Institutionen för data- och informationsteknik ©2006 Uno Holmer [email protected] www.chl.chalmers.se/~holmer/ Manual 1 (5) 2006-03-09 Kompilering av Java-program med eclipse SDK för den som kan BlueJ Inledning Eclipse är ett kraftfullt kodutvecklingsverktyg för Java. Det kan laddas ner gratis från www.eclipse.org. I detta papper beskrivs kortfattat hur man hanterar små Java-projekt med eclipse. Verktyget kan upplevas som lite krångligt att sätta sig in i, men har trots det många användarvänliga finesser, bl.a. en utmärkt aktiv hjälpfunktion, möjligheter att avlusa program med trådar, m.m. Beteckningar: I exemplen nedan är proj namnet på ett fiktivt projekt, MainClass namnet på en tänkt huvudklass i ett projekt. Huvudklassen skall innehålla main-metoden. Text typsatt i Arial är kommandon, begrepp m.m. som visas i eclipse. Uttryck som A->B betyder att du först skall välja A (t.ex. en meny) och sen alternativet B etc. Text som du skall skriva in i inmatningsfält är satt i Courier. Workspace Eclipse arbetar alltid mot en arbetskatalog (workspace) i filsystemet. När eclipse startas kan man bestämma vilken som skall vara arbetskatalog. Inställningen kan ändras senare. Det grafiska användargränssnittet Börja med att öppna två användbara navigationsflikar till vänster i fönstret: 1. Window->Show view->Navigator 2. Window->Show view->Package explorer Ha alltid Package explorer-fliken vald när du kompilerar. Skapa ett Java-projekt Välj File->New->Project->Java Project->Next 1. Project name: proj 2. Contents: Create project in workspace 3. Project Layout: Create separate source and output folders a. Configure defaults i. Source and output folder 1. Välj Folders 2. Source folder name: src 3. Ouput folder name: bin ii. Apply iii. Ok 4. Finish eclipse.doc Objektorienterade applikationer, DAT055 0205, DAI 2, 05/06, lp III CHALMERS Institutionen för data- och informationsteknik ©2006 Uno Holmer [email protected] www.chl.chalmers.se/~holmer/ Manual 2 (5) 2006-03-09 Importera ett BlueJ-projekt Skapa först ett projekt enligt föregående punkt. File->Import->File system->Next 1. From directory: navigera till BlueJ-projektets rotkatalog ok 2. Select all 3. Filter types a. kryssa .java b. ok 4. Into folder: proj/src 5. Finish Kompilera ett projekt Main-metod Om du importerat filer från BlueJ behöver du troligen definiera metoden main eftersom denna ofta inte används i BlueJ-projekt. Bestäm vilken klass som skall vara huvudklass och lägg till metoden i klassen enligt följande mall. Ex. Antag att klassen heter MainClass , då kan metoden typiskt se ut så här: public static void main(String[] arg) { MainClass obj = new MainClass(ev. argument); obj.startmetod(ev. argument); } Metoden kan givetvis ha annat innehåll, beroende på tillämpningen. Öppna källkodsfilen för MainClass genom att dubbelklicka på dess ikon i Package explorer-trädet. Kompilera När du kompilerar skall alltid Package explorer vara öppen, inte Navigator. Project->Build project Nu skall katalogen proj/bin innehålla .class-filerna med den kompilerade bytekoden. Verifiera detta i utforskaren eller i Navigator. Fungerar det inte? Project->Clean... brukar lösa problemet. eclipse.doc Objektorienterade applikationer, DAT055 0205, DAI 2, 05/06, lp III CHALMERS Institutionen för data- och informationsteknik ©2006 Uno Holmer [email protected] www.chl.chalmers.se/~holmer/ Manual 3 (5) 2006-03-09 Skapa en Exekveringskonfiguration Innan programmet kan exekveras måste en exekveringskonfiguration skapas. Se till att projektet är öppet innan du fortsätter nedan. Run->Run... 1. Configurations: a. markera Java application b. New 2. Name: proj 3. Project: proj 4. Main class: MainClass 5. Apply 6. Close Exekvera ett program Eftersom man kan ha många exekveringskonfigurationer är det inte säkert att den som är vald gäller det aktuella projektet. Om du är osäker eller om fel applikation exekveras måste du välja rätt konfiguration: Run->Run... 1. Configurations: markera rätt applikation 2. Run I fortsättningen exekveras applikationen enklast med den lilla grönvita pilen i verktygslisten längst upp i fönstret. Välja Java-maskin Eclipse kan arbeta med flera olika Java-versioner. T.ex. kan olika projekt ställas in så att de kompileras med olika versioner. Window->Preferences Java->Installed JREs Välj den JRE du vill ha eller addera den till tabellen om den inte finns där. (JRE = Java Runtime Environment) eclipse.doc Objektorienterade applikationer, DAT055 0205, DAI 2, 05/06, lp III CHALMERS Institutionen för data- och informationsteknik ©2006 Uno Holmer [email protected] www.chl.chalmers.se/~holmer/ Manual 4 (5) 2006-03-09 Resursfiler Resurser som t.ex. bild- och ljudfiler placeras lämpligen i en egen katalog resources i projektets rotkatalog. Där skall alltså finnas katalogerna src, bin och resources. Arkivfiler Genom att packa ihop en samling .class-filer och resurser i en JAR-fil (Java ARchive) får man en plattformsoberoende applikation som kan exekveras oberoende av utvecklingsverktyg som BlueJ eller Eclipse. En JAR-fil kan exekveras med kommandot > java –jar JAR-fil i ett Linux-shell eller DOS-prompt, eller genom att klicka på namnet i en desk-top-omgivning, t.ex. i Windows utforskare. En JAR-fil är i princip en vanlig arkivfil av typen .zip som förutom applikationens filer innehåller en textfil med namnet MANIFEST.MF. Denna anger namnet på klassen som innehåller main-metoden och filen brukar skapas automatiskt av utvecklingsvektygen. mainmetoden måste man dock skriva själv. 1 JAR-filer kan skapas med både BlueJ och Eclipse, eller på kommandoraden. Skapa en arkivfil med eclipse 1. Öppna först projektet som skall exporteras till arkivfilen. 2. Spara alla filer och kompilera projektet. 3. Högerklicka på projektnoden och välj a. Export->JAR File->Next b. Kryssa rutan Export generated class files and resources c. Välj namn och plats för arkivfilen: proj.jar d. Next e. Next f. Main class: browsa till klassen MainClass g. Finish Arkivfilen proj.jar ligger nu i den valda katalogen. Om allt gjorts rätt skall den gå att exekvera. För mer information se http://java.sun.com/docs/books/tutorial/deployment/jar/index.html. Skapa en arkivfil på kommandoraden Följande kommando skapar JAR-filen proj.jar. Det kan köras i t.ex. ett Linux-shell eller ett DOS-prompt-fönster: > jar -cf proj.jar filer... c = create f = file 1 Det går att göra en JAR ”manuellt” med något verktyg som tillverkar .zip-arkiv, men då får man själv skapa och lägga till manifest-filen till arkivet. eclipse.doc Objektorienterade applikationer, DAT055 0205, DAI 2, 05/06, lp III CHALMERS Institutionen för data- och informationsteknik ©2006 Uno Holmer [email protected] www.chl.chalmers.se/~holmer/ Manual 5 (5) 2006-03-09 Exekvera en arkivfil som innehåller resurser Det går att inifrån applikationen hämta resurser från en JAR-fil, t.ex. m.h.a. klassen java.util.jar.JarFile, men det enklaste är att manuellt extrahera resurskatalogen ur JAR-filen innan den exekveras första gången. Följande kommando extraherar katalogen resources och dess eventuella underkataloger ur JAR-filen proj.jar: > jar -xvf proj.jar resources Därefter kan proj.jar exekveras som vanligt. Använda klasser i JAR-filer För att använda förkompilerade klasser (byte-kod i .class-filer) i ett program kan du gå till väga på något av följande sätt. Utnyttja javas extensionsmekanism Placera JAR-filen i katalogen för den java-version som används av eclipse, t.ex. jdk1.5.0_06 /lib/ext och starta om eclipse. Metoden är bekväm, men den fungerar nog bättre hemma än i skolan eftersom du måste göra om proceduren vid varje arbetspass. Importera JAR-filen till projektet 1. Placera t.ex. JAR-filen i rotkatalogen till dina eclipseprojekt för övning 1. 2. Öppna eclipse-projektet där du vill använda JAR-filen. 3. Högermarkera projektnoden i Package Explorer. a. Properties->Java Build Path->Libraries->Add External JARs i. Browsa till JAR-filen. ii. Open iii. Ok 4. Kompilera om projektet. Importera klasserna till programmet I de java-filer som använder paketet(en) i JAR-filen måste du i vanlig ordning skriva importdeklarationer. Ex. import mittPaket.*; MinKlass x = new MinKlass(); ... eclipse.doc Objektorienterade applikationer, DAT055 0205, DAI 2, 05/06, lp III