java:jar_files

Differences

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

Link to this comparison view

java:jar_files [2016/02/12 13:12]
gthanos [Εκτελώντας λογισμικό σε αρχεία JAR]
java:jar_files [2016/02/26 11:15]
Line 1: Line 1:
-====== Αρχεία Java Archive (JAR) ====== 
  
-Τα αρχεία JAR μας δίνουν την δυνατότητα να ομαδοποιήσουμε πολλαπλά αρχεία **.class** σε ένα αρχείο (archive). Ένα αρχείο JAR περιέχει σε συμπιεσμένη μορφή τα εξής: 
-  - **.class** files 
-  - Συμπληρωματικά αρχεία που συνδέονται με Java applets και applications. 
-  - Το αρχείο MANIFEST.MF για το οποίο θα μιλήσουμε στη συνέχεια. 
- 
-Το βασικό πλεονέκτημα των αρχείων JAR είναι ότι αντικαθιστούν πολύπλοκες ιεραρχίες πακέτων και κλάσεων με ένα μόνο αρχείο. Επίσης,​ το αρχεία JAR είναι συμπιεσμένα,​ επομένως καταλαμβάνουν λιγότερο χωρο και μεταφέρονται πιο γρήγορα όταν πρόκειται για web applications. Παρακάτω θα δούμε πως δημιουργούμε ή μεταβάλουμε JAR αρχεία και θα εξηγήσουμε τι είναι το MANIFEST.MF αρχείο και γιατί χρησιμοποιείται. 
- 
-===== Δημιουργία JAR files ===== 
- 
-Η βασική εντολή για την δημιουργία ενός jar file είναι η παρακάτω:​ 
- 
-<​code>​ 
-jar cf jar-file input-file(s) 
-</​code>​ 
- 
-Επανερχόμενοι στο παράδειγμα του [[:​java:​packages:​using|homework1 του μαθήματος CE325]], ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε ένα jar αρχείο που να περιέχει όλα τα .class αρχεία. Το αρχείο αυτό θα το βάλουμε μεσα στον κατάλογο ''​homework1''​. ​ 
- 
-<​code>​ 
-cd homework1/​src/​ 
-jar cvf homework1.jar ./*.class 
-mv homework1.jar ../ 
-</​code>​ 
- 
-Εναλλακτικά,​ θα μπορούσαμε να γράψουμε 
- 
-<​code>​ 
-cd homework1 
-jar cvf homework1.jar -C src/ ./*.class 
-</​code>​ 
- 
-Η παραπάνω εντολή εκτελεί την εντολή jar μέσα στο directory ''​src/''​ και αποθηκεύει το jar file στο αρχείο homework1. Τα υπόλοιπα options έχουν ως εξής. 
-^ Option ^ Περιγραφή ^ 
-| v | **Verbose:​** Δείχνει ποια αρχεία προστίθενται μέσα στο jar file κατά την δημιουργία του | 
-| c | **Create:​** ​ | 
-| 0 | no compression added to the jar file | 
-| M | το Manifest αρχείο που προστίθεται δεν θα προστεθεί | 
-| m | Χρησιμοποιείται για να προστεθεί ειδική πληροφορία στο Manifest αρχείο,​ ως εξής <​code>​jar cmf extra-manifest.txt jar-file input-file(s) </​code>,​ όπου το αρχείο ''​extra-manifest.txt''​ περιέχει την επιπλέον πληροφορία που θέλουμε να προσθέσουμε. | 
-| C | αλλαγή του τρέχοντος καταλόγου πριν την εκτέλεση της εντολής jar | 
- 
-===== Βλέποντας τα περιεχόμενα ενος JAR file ===== 
- 
-Για να δείτε τα περιεχόμενα ενός JAR file αρκεί να χρησιμοποιήσετε την εντολή 
- 
-<​code>​ 
-jar tf jar-file 
-</​code>​ 
- 
-Για να δείτε τα περιεχόμενα του homework1.jar αρκεί να γράψετε 
- 
-<​code>​ 
-jar tf homework1.jar 
-</​code>​ 
- 
-===== Εξαγωγή των περιεχομένων αρχείων ενός JAR file ===== 
- 
-Για να εξάγετε τα περιεχόμενα ενός JAR file αρκεί να χρησιμοποιήσετε την εντολή 
- 
-<​code>​ 
-jar xf jar-file 
-</​code>​ 
- 
-Για να εξάγετε τα περιεχόμενα του homework1.jar αρκεί να γράψετε 
- 
-<​code>​ 
-jar xf homework1.jar 
-</​code>​ 
- 
-===== Εκτελώντας λογισμικό σε αρχεία JAR ===== 
- 
-Μπορείτε να εκτελέσετε ένα πρόγραμμα που βρίσκεται σε ένα αρχείο JAR χρησιμοποιώντας την παρακάτω εντολή 
- 
-<​code>​ 
-java -jar jar-file 
-</​code>​ 
- 
-To flag ''​-jar''​ ενημερώνει το περιβάλλον εκτέλεσης ότι η εφαρμογή είναι πακεταρισμένη μέσα σε ένα αρχείο jar. Μπορείτε να χρησιμοποιήσετε μόνο ένα αρχείo jar για την παραπάνω δήλωση. Για να εκτελεστεί με επιτυχία το παραπάνω πρόγραμμα απαραίτητη προϋπόθεση είναι το περιβάλλον εκτέλεσης να γνωρίζει ποια κλάση από όσες περιέχονται μέσα στο jar αρχείο είναι η κλάση από την οποία ξεκινά η εφαρμογή. Η κλάση εκκίνησης είναι η κλάση που περιέχει μία συνάρτηση ​ 
- 
-<code java> 
-public static void main(String args[]) { .... } 
-</​code>​ 
- 
-Για να προσδιορίσετε την κλάση εκκίνησης μέσα στο jar αρχείο,​ αρκεί να προσθέσετε μέσα στο αρχείο MANIFEST.MF την ακόλουθη γραμμή 
-<​code>​ 
-Main-Class: myMainClass 
-</​code>​ 
- 
-Για την δημιουργία ενός JAR αρχείου που περιέχει στο MANIFEST.MF αρχείo την παραπάνω γραμμή αρκεί να κάνουμε τα εξής. 
-  - Δημιουργούμε ένα αρχείο text (π.χ. manifest-info.txt) που περιέχει την γραμμή που θέλουμε να προσθέσουμε στο MANIFEST.MF αρχείο δηλ. ''​Main-Class:​ myMainClass''​. 
-  - Στη συνέχεια δημιουργούμε jar αρχείο ως εξής <​code>​jar cvfm homework1.jar manifest-info.txt ./</​code>​. Παραρητήστε την προσθήκη του option **'​m'​** σε συνδυασμό με την χρήση του αρχείου που δημιουργήσαμε και περιέχει το extra header για το MANIFEST.MF. 
- 
-Αν δεν θέλετε να φτιάξετε αρχείο txt θα μπορούσατε να γράψετε το εξής. 
-<​code>​ 
-jar cvfe homework1.jar myMainClass ./*.class 
-</​code>​ 
- 
-<WRAP tip 70% center round> 
-Όταν εκτελούμε λογισμικό με χρήση αρχείων JAR η επιλογή --classpath δεν λαμβάνεται υπόψη. Σε αυτή την περίπτωση όλες οι βιβλιοθήκες που είναι απαραίτητες για το πρόγραμμα μας (εκτός από τις standard βιβλιοθήκες της Java) θα πρέπει να βρίσκονται μέσα στο συγκεκριμένο αρχείο JAR. 
-</​WRAP>​ 
- 
-|Προηγούμενο:​ [[ :​java:​packages:​dir_structure | Μεταγλώττιση κλάσεων που ανήκουν σε πακέτα ]] | Επόμενο:​ [[ :​java:​classpath | Η μεταβλητή περιβάλλοντος CLASSPATH ]]| 
java/jar_files.txt · Last modified: 2016/02/26 11:15 (external edit)