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:55] – [Παραδείγματα χρήσης 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 πρόγραμμα δείχνει στο σύνολο των βιβλιοθηκών που απαιτούνται. | ||
| Line 8: | Line 12: | ||
| Στα πλαίσια του μαθήματος μας ΔΕΝ θα χρειαστεί να αλλάξετε μόνιμα την μεταβλητή CLASSPATH. Εάν επιθυμείτε αλλαγή της μεταβλητής CLASSPATΗ μπορείτε να το κάνετε με την βοήθεια των παρακάτω συνδέσμων. | Στα πλαίσια του μαθήματος μας ΔΕΝ θα χρειαστεί να αλλάξετε μόνιμα την μεταβλητή CLASSPATH. Εάν επιθυμείτε αλλαγή της μεταβλητής CLASSPATΗ μπορείτε να το κάνετε με την βοήθεια των παρακάτω συνδέσμων. | ||
| - | * http:// | + | * https:// |
| * http:// | * http:// | ||
| Line 22: | Line 26: | ||
| ===== Παραδείγματα χρήσης CLASSPATH ===== | ===== Παραδείγματα χρήσης CLASSPATH ===== | ||
| - | <WRAP tip 80% center round> | + | ===== Χρήση Classpath - Παράδειγμα 1ο ===== |
| **Προσοχή: | **Προσοχή: | ||
| Line 37: | Line 41: | ||
| </ | </ | ||
| - | οι οποίες | + | οι οποίες μεταγλωττίζονται μέσα στον κατάλογο **myProject/ |
| < | < | ||
| - | myProject/ | + | cd path/to/ |
| - | myProject/build/my/package2/Class2.class | + | javac -d build/classes/ src/ |
| + | javac -d build/classes/ src/my/package1/Class2.java | ||
| </ | </ | ||
| - | Αν θέλετε να μεταγλωττίσετε ή να εκτελέσετε ένα πρόγραμμα το οποίο χρησιμοποιεί τις παραπάνω μεταγλωττισμένες κλάσεις θα πρέπει να δηλώσετε ως classpath τον κατάλογο **myProject/ | + | Μετά την μεταγλώττιση λαμβάνουμε τα αρχεία **.class**: |
| + | < | ||
| + | myProject/ | ||
| + | myProject/ | ||
| + | </ | ||
| + | |||
| + | Αν θέλετε να μεταγλωττίσετε ή να εκτελέσετε ένα πρόγραμμα το οποίο χρησιμοποιεί τις παραπάνω μεταγλωττισμένες κλάσεις θα πρέπει να δηλώσετε ως classpath τον κατάλογο **myProject/ | ||
| + | |||
| + | δηλαδή | ||
| + | < | ||
| + | javac -cp path/ | ||
| + | </ | ||
| Από εκεί και κάτω, εφόσον ο compiler γνωρίζει το πλήρες όνομα της κλάσης (< | Από εκεί και κάτω, εφόσον ο compiler γνωρίζει το πλήρες όνομα της κλάσης (< | ||
| - | Έτσι αν ο compiler ή το JRE χρειάζεται την κλάση **my.package1.Class1** τότε στο classpath που έχετε ορίσει θα ψάξει για την κλάση με συνολικό path **my/ | + | Έτσι αν ο compiler ή το JRE χρειάζεται την κλάση **my.package1.Class1** τότε στο classpath που έχετε ορίσει θα ψάξει για την κλάση με συνολικό path **myProject/ |
| - | </ | + | |
| - | Aς υποθέσουμε ότι θέλετε να μεταγλωττίσετε την κλάση **MyTestClass.java** η οποία απαιτεί τις κλάσεις **my.library.Cone** και **my.library.Cylinder**, | + | ===== Χρήση Classpath - Παράδειγμα 2ο ===== |
| + | |||
| + | Κατεβάστε το παράδειγμα {{: | ||
| + | |||
| + | Aς υποθέσουμε ότι θέλετε να μεταγλωττίσετε την κλάση **MyTestClass.java** η οποία απαιτεί τις κλάσεις **my.library.Cone.java** και **my.library.Cylinder.java**, δηλαδή τις κλάσεις **Cone** και **Cylinder** που ανήκουν στο package **my.library**. Ας υποθέσουμε επίσης ότι στο λειτουργικό σύστημα Linux το path των παραπάνω __μεταγλωττισμένων__ κλάσεων βρίσκεται στον παρακάτω κατάλογο | ||
| < | < | ||
| - | /home/username/Java/libraries/ | + | /path/to/dir/classpath_usage_ex1/build/classes/ |
| - | /home/username/Java/libraries/ | + | /path/to/dir/classpath_usage_ex1/build/classes/ |
| </ | </ | ||
| - | Επίσης, | + | Επίσης, |
| < | < | ||
| - | /home/username/Java/libraries/build/jar/shapes3d.jar | + | /path/to/dir/classpath_usage_ex1/build/jar/my-library.jar |
| </ | </ | ||
| - | |||
| ==== Χρήση dir classpath ==== | ==== Χρήση dir classpath ==== | ||
| Line 69: | Line 87: | ||
| < | < | ||
| - | javac MyTestClass.java -cp /home/username/CE325/my_projects/ | + | javac MyTestClass.java -cp /path/to/dir/classpath_usage_ex1/ |
| </ | </ | ||
| Line 77: | 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 103: | 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 171: | Line 198: | ||
| </ | </ | ||
| - | Εναλλακτικά χρησιμοποιήστε το αρχείο '' | + | Εναλλακτικά χρησιμοποιήστε το αρχείο '' |
| + | |||
| + | |Προηγούμενο: [[: | ||
| - | |Προηγούμενο: | ||
java/classpath.1442638534.txt.gz · Last modified: 2015/09/19 03:55 (external edit)
