java:classpath
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| java:classpath [2015/09/19 04:24] – [JAVA CLASSPATH] gthanos | java:classpath [2020/02/11 10:05] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| + | |||
| + | <WRAP important 60% center round> | ||
| + | ===Η συγκεκριμένη ενότητα είναι προαιρετική και μπορείτε να την παραλήψετε κατά την ανάγνωση της θεωρείας του μαθήματος.=== | ||
| + | </ | ||
| Ως CLASSPATH ορίζεται το σύνολο των καταλόγων (directories) του συστήματος στα οποία βρίσκονται μεταγλωττισμένες κλάσεις (δηλ **.class** αρχεία) και οι οποίες είναι απαραίτητες για την μεταγλώττιση ή για τη εκτέλεση ενός προγράμματος Java. Με άλλα λόγια το CLASSPATH για κάθε Java πρόγραμμα δείχνει στο σύνολο των βιβλιοθηκών που απαιτούνται. | Ως CLASSPATH ορίζεται το σύνολο των καταλόγων (directories) του συστήματος στα οποία βρίσκονται μεταγλωττισμένες κλάσεις (δηλ **.class** αρχεία) και οι οποίες είναι απαραίτητες για την μεταγλώττιση ή για τη εκτέλεση ενός προγράμματος Java. Με άλλα λόγια το CLASSPATH για κάθε Java πρόγραμμα δείχνει στο σύνολο των βιβλιοθηκών που απαιτούνται. | ||
| - | |||
| - | <WRAP important 80% center round> | ||
| - | **Προσοχή: | ||
| - | < | ||
| - | my.package1.Class1 | ||
| - | my.package2.Class2 | ||
| - | </ | ||
| - | |||
| - | που βρίσκονται στον κατάλογο **myProject/ | ||
| - | < | ||
| - | myProject/ | ||
| - | myProject/ | ||
| - | </ | ||
| - | |||
| - | οι οποίες είναι μεταγλωττισμένες μέσα στον κατάλογο **build/ | ||
| - | build/ | ||
| - | </ | ||
| Όλα τα λειτουργικά συστήματα διαθέτουν την μεταβλητή [[java: | Όλα τα λειτουργικά συστήματα διαθέτουν την μεταβλητή [[java: | ||
| Line 25: | Line 12: | ||
| Στα πλαίσια του μαθήματος μας ΔΕΝ θα χρειαστεί να αλλάξετε μόνιμα την μεταβλητή CLASSPATH. Εάν επιθυμείτε αλλαγή της μεταβλητής CLASSPATΗ μπορείτε να το κάνετε με την βοήθεια των παρακάτω συνδέσμων. | Στα πλαίσια του μαθήματος μας ΔΕΝ θα χρειαστεί να αλλάξετε μόνιμα την μεταβλητή CLASSPATH. Εάν επιθυμείτε αλλαγή της μεταβλητής CLASSPATΗ μπορείτε να το κάνετε με την βοήθεια των παρακάτω συνδέσμων. | ||
| - | * http:// | + | * https:// |
| * http:// | * http:// | ||
| Line 39: | Line 26: | ||
| ===== Παραδείγματα χρήσης CLASSPATH ===== | ===== Παραδείγματα χρήσης CLASSPATH ===== | ||
| - | Aς υποθέσουμε ότι θέλετε να μεταγλωττίσετε την | + | ===== Χρήση Classpath - Παράδειγμα 1ο ===== |
| + | **Προσοχή: | ||
| + | Θα εξηγήσουμε αυτή την λεπτή διαφορά με ένα παράδειγμα. Ας υποθέσουμε ότι έχετε τις κλάσεις | ||
| < | < | ||
| - | / | + | my.package1.Class1 |
| - | / | + | my.package2.Class2 |
| </ | </ | ||
| - | Επίσης, το πακέτο | + | που βρίσκονται στον κατάλογο **myProject/ |
| + | < | ||
| + | myProject/ | ||
| + | myProject/ | ||
| + | </ | ||
| + | |||
| + | οι οποίες μεταγλωττίζονται μέσα στον κατάλογο **myProject/ | ||
| + | < | ||
| + | cd path/ | ||
| + | javac -d build/ | ||
| + | javac -d build/ | ||
| + | </ | ||
| + | |||
| + | Μετά την μεταγλώττιση λαμβάνουμε τα αρχεία **.class**: | ||
| + | < | ||
| + | myProject/ | ||
| + | myProject/ | ||
| + | </ | ||
| + | |||
| + | Αν θέλετε να μεταγλωττίσετε ή να εκτελέσετε ένα πρόγραμμα το οποίο χρησιμοποιεί τις παραπάνω μεταγλωττισμένες κλάσεις θα πρέπει να δηλώσετε ως classpath τον κατάλογο **myProject/ | ||
| + | |||
| + | δηλαδή | ||
| + | < | ||
| + | javac -cp path/ | ||
| + | </ | ||
| + | |||
| + | Από εκεί και κάτω, εφόσον ο compiler γνωρίζει | ||
| + | |||
| + | Έτσι αν ο compiler ή το JRE χρειάζεται την κλάση **my.package1.Class1** τότε στο classpath που | ||
| + | |||
| + | ===== Χρήση Classpath - Παράδειγμα 2ο ===== | ||
| + | |||
| + | Κατεβάστε το παράδειγμα {{: | ||
| + | |||
| + | Aς υποθέσουμε ότι θέλετε να μεταγλωττίσετε την κλάση **MyTestClass.java** η οποία απαιτεί τις κλάσεις **my.library.Cone.java** και **my.library.Cylinder.java**, | ||
| + | |||
| + | < | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Επίσης, | ||
| < | < | ||
| - | /home/username/CE325/my_projects/ | + | /path/to/dir/classpath_usage_ex1/build/jar/my-library.jar |
| </ | </ | ||
| ==== Χρήση dir classpath ==== | ==== Χρήση dir classpath ==== | ||
| - | Εάν θέλετε να ορίσετε στο CLASSPATH ένα κατάλογο (directory path) που περιέχει κλάσεις που απαιτούνται κατά την μεταγλώττιση ή εκτέλεση του προγράμματος σας τότε ορίζετε στο CLASSPATH το path αυτό. | + | Για να μεταγλωττίσετε την κλάση του παραπάνω παραδείγματος αρκεί να γράψετε. |
| < | < | ||
| - | javac MyTestClass.java -cp /home/username/CE325/my_projects/ | + | javac MyTestClass.java -cp /path/to/dir/classpath_usage_ex1/ |
| </ | </ | ||
| Line 65: | Line 95: | ||
| < | < | ||
| - | javac MyTestClass.java -cp /home/username/CE325/my_projects/ | + | javac MyTestClass.java -cp /path/to/dir/classpath_usage_ex1/build/jar/my-library.jar |
| </ | </ | ||
| - | (__προσέξτε ότι ορίζουμε το jar αρχείο και όχι τον κατάλογο στον οποίο περιέχεται__). | ||
| - | ==== Χρήση πολλαπλών classpaths ==== | + | <WRAP tip 80% center round> |
| + | Παρατηρήστε ότι ορίζουμε το **jar** αρχείο και όχι τον κατάλογο στον οποίο περιέχεται αυτό. Στο παραπάνω παράδειγμα χρησιμοποιούμε απόλυτα paths για τον ορισμό του CLASSPATH. Φυσικά μπορείτε να χρησιμοποιείται και σχετικά paths, όπως παρακάτω | ||
| + | |||
| + | Υποθέτωντας ότι βρίσκεστε στον κατάλογο **/ | ||
| + | < | ||
| + | javac MyTestClass.java -cp build/ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Χρήση πολλαπλών classpaths | ||
| Εάν θέλετε να ορίσετε στο CLASSPATH πολλαπλά **jar** αρχεία ή directories, | Εάν θέλετε να ορίσετε στο CLASSPATH πολλαπλά **jar** αρχεία ή directories, | ||
| - | Αν για παράδειγμα, | + | Αν για παράδειγμα, |
| < | < | ||
| - | / | + | / |
| + | C: | ||
| </ | </ | ||
| Line 91: | Line 130: | ||
| < | < | ||
| - | javac MyTestClass.java -cp /home/username/CE325/my_projects/homework2/build/classes;/home/username/CE325/other_libs/ntua-common-libs.jar | + | javac MyTestClass.java -cp C:\Users\username\CE325\my_projects\homework2\build\classes;C:\Users\username\CE325\other_libs\ntua-common-libs.jar |
| </ | </ | ||
| Line 159: | Line 198: | ||
| </ | </ | ||
| - | Εναλλακτικά χρησιμοποιήστε το αρχείο '' | + | Εναλλακτικά χρησιμοποιήστε το αρχείο '' |
| + | |||
| + | |Προηγούμενο: [[: | ||
| - | |Προηγούμενο: | ||
java/classpath.1442636686.txt.gz · Last modified: 2015/09/19 03:24 (external edit)
