This is an old revision of the document!
Μεταγλώττιση κλάσεων που ανήκουν σε πακέτα
Μέχρι τώρα είδαμε ότι κάθε κλάση στη Java αποτελεί ένα ξεχωριστό αρχείο. Για παράδειγμα η κλάση myFirstClass
θα βρίσκεται στο αρχείο με το όνομα myFirstClass.java
. Η εισαγωγή των πακέτων στην γλώσσα Java, εκτός από την ονοματοδοσία των αρχείων καθορίζει και τον κατάλογο (directory) μέσα στο οποίο θα πρέπει να βρίσκονται.
Ως παράδειγμα, θα θεωρήσουμε ξανά την κλάση Test του homework1 του μαθήματος CE325. Με βάση τα παραπάνω διαμορφώνεται το πακέτο με όνομα ce325.homework1
μέσα στο οποίο βρίσκεται η κλάση Test
. Η ενδεικτική κλάση Test δίνεται παρακάτω
- Test.java
package ce325.homework1; public class Test { String test; public Test(String s) { test = s; } public String toString() { return test; } }
Ας θεωρήσουμε επίσης ότι όλα τα αρχεία της συγκεκριμένης εργασίας βρίσκονται μέσα στον κατάλογο project1/
, σε ένα τυχαίο μονοπάτι του filesystem. Ιδανικά θα θέλαμε να διαχωρίσουμε τα αρχεία πηγαίου κώδικα .java από τα εκτελέσιμα αρχεια .class. Για τον λόγο αυτό δημιουργούμε δύο υποκαταλόγους
src
για τον πηγαίο κώδικα καιbuild
για τα μεταγλωττισμένα αρχεία.
Τελικά, έχουμε τους καταλόγους
project1/src project1/build
Προκειμένου να μεταγλωττίσουμε την κλάση ce325.homework1.Test
, αυτή θα πρέπει να βρίσκεται στον κατάλογο ce325/homework1/
μέσα στον φάκελο src
, δηλαδή τελικά η κλάση Test.java θα βρίσκεται στον κατάλογο
project1/src/ce325/homework1/Test.java
Υποθέτοντας ότι μεταβαίνουμε μέσα στον κατάλογο project1, η παραπάνω κλάση μεταγλωττίζεται με μία δήλωση της μορφής
cd project1/ javac -d ./build/ src/ce325/homework1/Test.java
To directive -d ./build/
χρησιμοποιείται για να δηλώσουμε πού θέλουμε να τοποθετήσουμε τελικά τα εκτελέσιμα αρχεία *.class
. Η τελική θέση του εκτελέσιμου Test.class είναι στον κατάλογο project1/build
. Επειδή το μεταγλωττισμένο αρχείο θα πρέπει να βρίσκεται εσωτερικά στον κατάλογο ce325/homework1/
τελικά καταλήγουμε το πλήρες path του μεταγλωττισμένου αρχείου να είναι project1/build/ce325/homework1/Test.class
.
O Java compiler φτιάχνει την δομή καταλόγου των αρχείων .class αυτόματα με βάση το πακέτο στο οποίο ανήκουν. Για παράδειγμα, από το πακέτο ce325.homework1 φτιάχνονται αυτόματα από τον compiler κάτω από τον κατάλογο build
οι κατάλογοι ce325
και ce325/homework1
. Μέσα στον κατάλογο ce325/homework1
εισάγεται το μεταγλωττισμένο αρχείο Test.class
Προηγούμενο: Χρήση (μεταγλωττισμένων) κλάσεων από άλλες κλάσεις | Περιεχόμενα | Επόμενο: Αρχεία Java Archive (JAR) |