java:packages:dir_structure

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:packages:dir_structure [2016/02/12 13:06]
gthanos
java:packages:dir_structure [2016/02/26 11:15] (current)
Line 3: Line 3:
 Μέχρι τώρα είδαμε ότι κάθε κλάση στη Java αποτελεί ένα ξεχωριστό αρχείο. Για παράδειγμα η κλάση ''​myFirstClass''​ θα βρίσκεται στο αρχείο με το όνομα ''​myFirstClass.java''​. Η εισαγωγή των πακέτων στην γλώσσα Java, εκτός από την ονοματοδοσία των αρχείων καθορίζει και τον κατάλογο (directory) μέσα στο οποίο θα πρέπει να βρίσκονται. Μέχρι τώρα είδαμε ότι κάθε κλάση στη Java αποτελεί ένα ξεχωριστό αρχείο. Για παράδειγμα η κλάση ''​myFirstClass''​ θα βρίσκεται στο αρχείο με το όνομα ''​myFirstClass.java''​. Η εισαγωγή των πακέτων στην γλώσσα Java, εκτός από την ονοματοδοσία των αρχείων καθορίζει και τον κατάλογο (directory) μέσα στο οποίο θα πρέπει να βρίσκονται.
  
-Ως παράδειγμα,​ θα θεωρήσουμε ξανά την κλάση Test του homework1 του ​τρέχοντος ​μαθήματος ​(CE210). Με βάση τα παραπάνω διαμορφώνεται το πακέτο με όνομα ''​ce210.homework1''​ μέσα στο οποίο βρίσκεται η κλάση ''​Test''​. Η ενδεικτική κλάση **Test** δίνεται παρακάτω+Ως παράδειγμα,​ θα θεωρήσουμε ξανά την κλάση Test του homework1 του μαθήματος ​CE325. Με βάση τα παραπάνω διαμορφώνεται το πακέτο με όνομα ''​ce325.homework1''​ μέσα στο οποίο βρίσκεται η κλάση ''​Test''​. Η ενδεικτική κλάση **Test** δίνεται παρακάτω
  
 <code java Test.java>​ <code java Test.java>​
-package ​ce210.homework1;+package ​ce325.homework1;
 public class Test { public class Test {
   String test;  ​   String test;  ​
Line 16: Line 16:
 Ας θεωρήσουμε επίσης ότι όλα τα αρχεία της συγκεκριμένης εργασίας βρίσκονται μέσα στον κατάλογο ''​project1/'',​ σε ένα τυχαίο μονοπάτι του filesystem. Ιδανικά θα θέλαμε να διαχωρίσουμε τα αρχεία πηγαίου κώδικα **.java** από τα εκτελέσιμα αρχεια **.class**. Για τον λόγο αυτό δημιουργούμε δύο υποκαταλόγους ​ Ας θεωρήσουμε επίσης ότι όλα τα αρχεία της συγκεκριμένης εργασίας βρίσκονται μέσα στον κατάλογο ''​project1/'',​ σε ένα τυχαίο μονοπάτι του filesystem. Ιδανικά θα θέλαμε να διαχωρίσουμε τα αρχεία πηγαίου κώδικα **.java** από τα εκτελέσιμα αρχεια **.class**. Για τον λόγο αυτό δημιουργούμε δύο υποκαταλόγους ​
   - ''​src''​ για τον πηγαίο κώδικα και ​   - ''​src''​ για τον πηγαίο κώδικα και ​
-  - ''​build''​ για τα εκτελέσιμα αρχεία. ​+  - ''​build''​ για τα μεταγλωττισμένα αρχεία. ​
  
 Τελικά,​ έχουμε τους καταλόγους ​ Τελικά,​ έχουμε τους καταλόγους ​
Line 25: Line 25:
 </​code>​ </​code>​
  
-Προκειμένου να μεταγλωττίσουμε την κλάση ''​ce210.homework1.Test'',​ αυτή θα πρέπει να βρίσκεται στον κατάλογο ''​ce210/​homework1/''​ μέσα στον φάκελο ''​src'',​ δηλαδή τελικά η κλάση **Test.java** θα βρίσκεται στον κατάλογο+Προκειμένου να μεταγλωττίσουμε την κλάση ''​ce325.homework1.Test'',​ αυτή θα πρέπει να βρίσκεται στον κατάλογο ''​ce325/​homework1/''​ μέσα στον φάκελο ''​src'',​ δηλαδή τελικά η κλάση **Test.java** θα βρίσκεται στον κατάλογο
  
 <​code>​ <​code>​
-project1/​src/​ce210/​homework1/​Test.java+project1/​src/​ce325/​homework1/​Test.java
 </​code>​ </​code>​
  
-Η παραπάνω κλάση μεταγλωττίζεται με μία δήλωση της μορφής+Υποθέτοντας ότι μεταβαίνουμε μέσα στον κατάλογο project1, η παραπάνω κλάση μεταγλωττίζεται με μία δήλωση της μορφής
  
 <​code>​ <​code>​
 cd project1/ cd project1/
-javac -d ./build/ src/ce210/​homework1/​Test.java ​+javac -d ./build/ src/ce325/​homework1/​Test.java ​
 </​code>​ </​code>​
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-To directive ''​-d ./​build/''​ χρησιμοποιείται για να δηλώσουμε που θέλουμε να τοποθετήσουμε τελικά τα εκτελέσιμα αρχεία ''​*.class''​. Η τελική θέση του εκτελέσιμου **Test.class** είναι ​ στον κατάλογο ''​project1/​build''​. Επειδή το μεταγλωττισμένο αρχείο θα πρέπει να βρίσκεται εσωτερικά στον κατάλογο ''​ce210/​homework1/''​ τελικά καταλήγουμε το πλήρες path του μεταγλωττισμένου αρχείου να είναι ''​project1/​build/​ce210/​homework1/​Test.class''​. O java  compiler φτιάχνει την δομή καταλόγου των αρχείων **.class** __αυτόματα με βάση το πακέτο στο οποίο ανήκουν__.+To directive ''​-d ./​build/''​ χρησιμοποιείται για να δηλώσουμε πού θέλουμε να τοποθετήσουμε τελικά τα εκτελέσιμα αρχεία ''​*.class''​. Η τελική θέση του εκτελέσιμου **Test.class** είναι ​ στον κατάλογο ''​project1/​build''​. Επειδή το μεταγλωττισμένο αρχείο θα πρέπει να βρίσκεται εσωτερικά στον κατάλογο ''​ce325/​homework1/''​ τελικά καταλήγουμε το πλήρες path του μεταγλωττισμένου αρχείου να είναι ''​project1/​build/​ce325/​homework1/​Test.class''​. O java  compiler φτιάχνει την δομή καταλόγου των αρχείων **.class** __αυτόματα με βάση το πακέτο στο οποίο ανήκουν__.
 </​WRAP>​ </​WRAP>​
  
-|Προηγούμενο:​ [[ :​java:​packages:​using | Χρήση ​πακέτων ]] | Επόμενο:​ [[ :​java:​jar_files | Αρχεία Java Archive (JAR) ]] |+|Προηγούμενο:​ [[ :​java:​packages:​using | Χρήση ​(μεταγλωττισμένων) κλάσεων από άλλες κλάσεις ]] | [[ :toc | Περιεχόμενα ​]] | Επόμενο:​ [[ :​java:​jar_files | Αρχεία Java Archive (JAR) ]] |
java/packages/dir_structure.1455282376.txt.gz · Last modified: 2016/02/26 11:15 (external edit)