User Tools

Site Tools


java:packages:dir_structure

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:packages:dir_structure [2017/01/30 13:18]
gthanos
java:packages:dir_structure [2020/02/11 10:04]
Line 1: Line 1:
-====== Μεταγλώττιση κλάσεων που ανήκουν σε πακέτα ====== 
  
-Μέχρι τώρα είδαμε ότι κάθε κλάση στη Java αποτελεί ένα ξεχωριστό αρχείο. Για παράδειγμα η κλάση ''myFirstClass'' θα βρίσκεται στο αρχείο με το όνομα ''myFirstClass.java''. Η εισαγωγή των πακέτων στην γλώσσα Java, εκτός από την ονοματοδοσία των αρχείων καθορίζει και τον κατάλογο (directory) μέσα στο οποίο θα πρέπει να βρίσκονται. 
- 
-Ως παράδειγμα, θα θεωρήσουμε ξανά την κλάση Test του homework1 του μαθήματος CE325. Με βάση τα παραπάνω διαμορφώνεται το πακέτο με όνομα ''ce325.homework1'' μέσα στο οποίο βρίσκεται η κλάση ''Test''. Η ενδεικτική κλάση **Test** δίνεται παρακάτω 
- 
-<code java Test.java> 
-package ce325.homework1; 
-public class Test { 
-  String test;   
-  public Test(String s) { test = s; } 
-  public String toString() { return test; } 
-} 
-</code> 
- 
-Ας θεωρήσουμε επίσης ότι όλα τα αρχεία της συγκεκριμένης εργασίας βρίσκονται μέσα στον κατάλογο ''project1/'', σε ένα τυχαίο μονοπάτι του filesystem. Ιδανικά θα θέλαμε να διαχωρίσουμε τα αρχεία πηγαίου κώδικα **.java** από τα εκτελέσιμα αρχεια **.class**. Για τον λόγο αυτό δημιουργούμε δύο υποκαταλόγους  
-  - ''src'' για τον πηγαίο κώδικα και  
-  - ''build'' για τα μεταγλωττισμένα αρχεία.  
- 
-Τελικά, έχουμε τους καταλόγους  
- 
-<code> 
-project1/src 
-project1/build 
-</code> 
- 
-Προκειμένου να μεταγλωττίσουμε την κλάση ''ce325.homework1.Test'', αυτή θα πρέπει να βρίσκεται στον κατάλογο ''ce325/homework1/'' μέσα στον φάκελο ''src'', δηλαδή τελικά η κλάση **Test.java** θα βρίσκεται στον κατάλογο 
- 
-<code> 
-project1/src/ce325/homework1/Test.java 
-</code> 
- 
-Υποθέτοντας ότι μεταβαίνουμε μέσα στον κατάλογο project1, η παραπάνω κλάση μεταγλωττίζεται με μία δήλωση της μορφής 
- 
-<code> 
-cd project1/ 
-javac -d ./build/ src/ce325/homework1/Test.java  
-</code> 
- 
-<WRAP tip 80% center round> 
-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'' 
-</WRAP> 
- 
-|Προηγούμενο: [[ :java:packages:using | Χρήση (μεταγλωττισμένων) κλάσεων από άλλες κλάσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:jar_files | Αρχεία Java Archive (JAR) ]] | 
java/packages/dir_structure.txt · Last modified: 2020/02/11 10:04 (external edit)