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 05:01] – [Χρήση jar 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/Java/libraries/build/ | + | javac MyTestClass.java -cp /path/to/dir/classpath_usage_ex1/build/classes/ |
</ | </ | ||
Line 77: | Line 95: | ||
< | < | ||
- | javac MyTestClass.java -cp /home/username/Java/libraries/build/jar/shapes3d.jar | + | javac MyTestClass.java -cp /path/to/dir/classpath_usage_ex1/build/jar/my-library.jar |
</ | </ | ||
+ | |||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | Παρατηρήστε ότι ορίζουμε το **jar** αρχείο και όχι τον κατάλογο στον οποίο περιέχεται. Στο παραπάνω παράδειγμα χρησιμοποιούμε απόλυτα paths για τον ορισμό του CLASSPATH. Φυσικά μπορείτε να χρησιμοποιείται και σχετικά paths, όπως παρακάτω | + | Παρατηρήστε ότι ορίζουμε το **jar** αρχείο και όχι τον κατάλογο στον οποίο περιέχεται |
Υποθέτωντας ότι βρίσκεστε στον κατάλογο **/ | Υποθέτωντας ότι βρίσκεστε στον κατάλογο **/ | ||
< | < | ||
- | javac MyTestClass.java -cp ../ | + | javac MyTestClass.java -cp build/jar/my-library.jar |
</ | </ | ||
</ | </ | ||
- | ==== Χρήση πολλαπλών classpaths ==== | + | ===== Χρήση πολλαπλών classpaths |
Εάν θέλετε να ορίσετε στο CLASSPATH πολλαπλά **jar** αρχεία ή directories, | Εάν θέλετε να ορίσετε στο CLASSPATH πολλαπλά **jar** αρχεία ή directories, | ||
- | Αν για παράδειγμα, | + | Αν για παράδειγμα, |
< | < | ||
- | / | + | / |
+ | C: | ||
</ | </ | ||
Line 110: | 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 178: | Line 198: | ||
</ | </ | ||
- | Εναλλακτικά χρησιμοποιήστε το αρχείο '' | + | Εναλλακτικά χρησιμοποιήστε το αρχείο '' |
+ | |||
+ | |Προηγούμενο: [[: | ||
- | |Προηγούμενο: | ||
java/classpath.1442638866.txt.gz · Last modified: 2015/09/19 04:01 (external edit)