Ορισμός περιβάλλοντος μεταγλώττισης

Ως προεπιλογή, οι δέσμες σας θα μεταγλωττιστούν με οποιοδήποτε JRE χρησιμοποιείται για την εκτέλεση της δόμησης και με τα επίπεδα προέλευσης και προορισμού να έχουν οριστεί σε 1.3 και 1.2.

Η δόμηση PDE έχει τη δυνατότητα ρύθμισης του JRE που χρησιμοποιείται κατά τη μεταγλώττιση ανά δέσμη.  Για να επωφεληθείτε αυτής της δυνατότητας, η πρώτη σας ενέργεια θα είναι να ενημερώσετε τη δόμηση PDE ποια JRE είναι διαθέσιμα.  Στο αρχείο ρύθμισης δόμησης build.properties, ορίστε τις ιδιότητες ώστε να παραπέμπουν σε κάθε ένα από τα εγκατεστημένα JRE.  Tο πρότυπο build.properties που παρέχεται στο org.eclipse.pde.build/templates/headless-build διαθέτει μια λίστα περιβαλλόντων, στα οποία έχουν προστεθεί σχόλια.  Απλά αφαιρέστε τα σχόλια από τις ιδιότητες, για τις οποίες έχετε JRE, και ορίστε την τιμή ώστε να συμφωνεί με το σύνολο αρχείων jar που ανήκουν στη διαδρομή κλάσεων εκκίνησης.  Για παράδειγμα, o ορισμός της ιδιότητας:

J2SE-1.5=C:/Java/1.5/jre/lib/rt.jar;C:/Java/1.5/jre/lib/jsse.jar

θα μεταγλωττίσει δέσμες που απαιτούν java 1.5 έναντι του rt.jar και jsse.jar.  Τα ονόματα των ιδιοτήτων πρέπει να συμφωνούν με τα ονόματα των περιβαλλόντων που γνωρίζει η δόμηση PDE.   Η δόμηση PDE θα ορίσει αυτόματα τα επίπεδα προέλευσης και προορισμού για κάθε περιβάλλον.  Tα περιβάλλοντα που γνωρίζει η δόμηση PDE και τα συσχετισμένα επίπεδα προέλευσης/ προορισμού είναι τα εξής:

Περιβάλλον
Προέλευση
Προορισμός
CDC-1.0/Foundation-1.0
1.3
1.1
CDC-1.1/Foundation-1.1
1.3
1.2
OSGi/ Eλάχιστο-1.0
1.3
1.1
OSGi/ Eλάχιστο-1.1
1.3
1.2
JRE-1.1
1.1
1.1
J2SE-1.2
1.2
1.1
J2SE-1.3
1.3
1.1
J2SE-1.4
1.3
1.2
J2SE-1.5
1.5
1.5
JavaSE-1.6
1.6
1.6
PersonalJava-1.1
1.1
1.1
PersonalJava-1.2
1.1
1.1
CDC-1.0/PersonalBasis-1.0
1.3
1.1
CDC-1.0/PersonalJava-1.0
1.3
1.1
CDC-1.1/PersonalBasis-1.1
1.3
1.2
CDC-1.1/PersonalJava-1.1
1.3
1.2

Επιλογή περιβάλλοντος για τη δέσμη σας

Υπάρχουν δύο ρυθμίσεις που επηρεάζουν το περιβάλλον, το οποίο χρησιμοποιείται για τη μεταγλώττιση της δέσμης σας. Η μία είναι η κεφαλίδα δήλωσης Bundle-RequiredExecutionEnvironment.  Αυτή η κεφαλίδα είναι μια λίστα περιβαλλόντων στα οποία μπορεί να εκτελείται η δέσμη σας.  Η δέσμη σας πρέπει να χρησιμοποιεί μόνο μεθόδους που βρίσκονται στο κατάλληλο υποσύνολο της λίστας όλων των περιβαλλόντων.  Συνίσταται η όσο το δυνατό μεγαλύτερη συμφωνία του περιβάλλοντος μεταγλώττισης με το περιβάλλον εκτέλεσης.

Η δεύτερη ρύθμιση είναι η ιδιότητα jre.compilation.profile από το αρχείο build.properties της δέσμης σας. Η τιμή αυτής της ιδιότητας πρέπει να είναι το προτιμώμενο περιβάλλον για τη μεταγλώττιση αυτής της δέσμης εάν η λίστα Bundle-RequiredExecutionEnvironment δεν είναι επαρκής.

Αυτές οι δύο ρυθμίσεις αποτελούν μια λίστα περιβαλλόντων, πρώτα jre.compilation.profile, στη συνέχεια τα περιβάλλοντα από το Bundle-RequiredExecutionEnvironment. Το πρώτο περιβάλλον σε αυτή τη λίστα που διατίθεται στη ρύθμιση δόμησης (δείτε την παραπάνω ενότητα) θα χρησιμοποιηθεί για τη μεταγλώττιση της δέσμης σας.

Παράδειγμα:
<buildDirectory>/plugins/bundleA/
META-INF/manifest.mf: Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0, J2SE-1.3
build.properties:  jre.compilation.profile=J2SE-1.4

<buildConfiguration>/
build.properties:  J2SE-1.3=C:/Java1.3/jre/lib/rt.jar;C:/Java1.3/jre/lib/i18n.jar
J2SE-1.4=C:/Java1.4/jre/lib/rt.jar;C:/Java1.4/jre/lib/jsse.jar

Στην παραπάνω ρύθμιση, η λίστα των περιβαλλόντων είναι η εξής (με τη σειρά): J2SE-1.4,  CDC-1.0/Foundation-1.0, J2SE-1.3.   Η δέσμη μπορεί να εκτελείται στο CDC/Foundation και J2SE-1.3, αλλά για κάποιο λόγο,  πρέπει να μεταγλωττίζεται με J2SE-1.4. Σε αυτή την περίπτωση, το J2SE-1.4 έχει ρυθμιστεί στη ρύθμιση δόμησης, και εμφανίζεται πρώτο στη λίστα των περιβαλλόντων, επομένως χρησιμοποιείται για τη μεταγλώττιση της δέσμης.  Τα επίπεδα προέλευσης και προορισμού που χρησιμοποιούνται σε αυτή την περίπτωση είναι 1.3 και 1.2. Εάν αντΆ αυτού, η ρύθμιση δόμησης έχει ορίσει μόνο το J2SE-1.3 και όχι το J2SE-1.4, τότε το J2SE-1.3 θα είναι το μοναδικό περιβάλλον στη λίστα για το οποίο διατίθεται ένα JRE, επομένως θα χρησιμοποιηθεί για τη μεταγλώττιση της δέσμης. Σε αυτή την περίπτωση, τα επίπεδα προέλευσης και προορισμού θα είναι 1.3 και 1.1.

Ρητή ρύθμιση τιμών μεταγλώττισης

Εάν, για κάποιο λόγο, η χρήση των περιβαλλόντων όπως περιγράφεται παραπάνω δεν καταλήξει στην επιθυμητή ρύθμιση, τότε είναι πιθανό μια δέσμη να ορίσει ρητά σε λίστα τις ρυθμίσεις που χρειάζεται. Για παράδειγμα, εάν έχετε μια δέσμη που χρησιμοποιεί J2SE-1.4 με προτάσεις assert, τότε τα επίπεδα προέλευσης και προορισμού θα πρέπει να είναι 1.4, και όχι η προεπιλογή 1.3 και 1.2.

Για τον ρητό καθορισμό των επιπέδων προέλευσης και προορισμού java, η δέσμη πρέπει να ορίσει τις ιδιότητες javacSource και javacTarget στο αρχείο build.properties.  Αυτές οι ιδιότητες θα αντικαταστήσουν τις τιμές που προέρχονται από τις ρυθμίσεις περιβάλλοντος.

Ομοίως, η ρύθμιση της ιδιότητας bootClasspath στο αρχείο build.properties της δέσμης θα αντικαταστήσει το σύνολο των αρχείων jar έναντι του οποίου μεταγλωττίζεται η δέσμη.