Οι πρόσθετες λειτουργίες JDT συμπεριλαμβάνουν μια λειτουργία αυξητικής και μαζικής μεταγλώττισης Java για τη δόμηση αρχείων .class Java από τον πρωτογενή κώδικα. Δεν παρέχεται κάποιο άμεσο API από το μεταγλωττιστή. Είναι εγκατεστημένο ως εργαλείο δόμησης σε έργα Java. Η μεταγλώττιση ενεργοποιείται με τη χρήση των τυπικών μηχανισμών δόμησης πλατφόρμας.
Ο μηχανισμός δόμησης πλατφόρμας περιγράφεται αναλυτικά στην ενότητα Εργαλεία αυξητικής δόμησης έργου .
Μπορείτε να μεταγλωττίσετε μέσω προγραμματισμού τα αρχεία πρωτογενούς κώδικα Java που περιέχονται σε ένα έργο, χρησιμοποιώντας το API δόμησης.
IProject myProject; IProgressMonitor myProgressMonitor; myProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, myProgressMonitor);
Για την περίπτωση ενός έργου Java, το έργο αυτό καλεί το εργαλείο αυξητικής δόμησης Java (μαζί με κάθε άλλο εργαλείο αυξητικής δόμησης που έχει προστεθεί στην προδιαγραφή δόμησης του έργου). Τα αρχεία .class που δημιουργούνται εγγράφονται στον καθορισμένο φάκελο εξόδου. Στο φάκελο εξόδου αντιγράφονται επίσης και πρόσθετα αρχεία πόρων.
Στην περίπτωση μαζικής δόμησης, όλα τα αρχεία .class του φακέλου εξόδου μπορούν να "διαγραφούν" ώστε να διασφαλιστεί ότι δεν θα υπάρχουν ανενεργά αρχεία. Η διαδικασία αυτή ελέγχεται με τη χρήση μιας επιλογής εργαλείου δόμησης πυρήνα JDT (CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER). Ως προεπιλογή ορίζεται η εκκαθάριση των φακέλων εξόδου. Αν δεν αλλάξει η επιλογή αυτή, πρέπει να διασφαλίσετε ότι τοποθετείτε όλα τα αρχεία .class, για τα οποία δεν έχετε αντίστοιχα αρχεία πρωτογενούς κώδικα, σε ένα ξεχωριστό φάκελο αρχείων κλάσεων στη διαδρομή κλάσεων και όχι στο φάκελο εξόδου.
Τα εργαλεία αυξητικής και μαζικής δόμησης μπορούν να ρυθμιστούν με άλλες επιλογές, οι οποίες ελέγχουν τους πόρους που αντιγράφονται στο φάκελο εξόδου. Το παρακάτω παράδειγμα δείχνει τον τρόπο ορισμού ενός φίλτρου πόρων έτσι ώστε τα αρχεία που τελειώνουν σε ".ignore" και οι φάκελοι με το όνομα "META-INF" να μην αντιγράφονται στο φάκελο εξόδου:
Hashtable options = JavaCore.getOptions();
options.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, "*.ignore,META-INF/");
JavaCore.setOptions(options);
Τα ονόματα των αρχείων εξαιρούνται αν ικανοποιούν τα κριτήρια ενός από τα παρεχόμενα μοτίβα. Ολόκληροι φάκελοι εξαιρούνται αν το όνομά τους ταιριάζει με ένα από τα παρεχόμενα ονόματα φακέλων που τελειώνουν σε ένα διαχωριστικό διαδρομής.
Τα εργαλεία αυξητικής και μαζικής δόμησης μπορούν επίσης να ρυθμιστούν ώστε να δημιουργούν μόνο ένα μοναδικό σφάλμα όταν το αρχείο .classpath διαθέτει σφάλματα. Η επιλογή αυτή ορίζεται ως προεπιλογή και εξαλείφει τα πολυάριθμα σφάλματα. Δείτε στην ενότητα Επιλογές εργαλείου δόμησης πυρήνα JDT μια πλήρη λίστα επιλογών που σχετίζονται με το εργαλείο δόμησης και τις προεπιλογές του.
Ο μεταγλωττιστής μπορεί επίσης να ρυθμιστεί με τη χρήση των επιλογών JavaCore. Για παράδειγμα, μπορείτε να ορίσετε το επίπεδο σοβαρότητας που θα πρέπει να χρησιμοποιείται σε διάφορα είδη προβλημάτων τα οποία εμφανίζονται κατά τη διάρκεια της μεταγλώττισης. Δείτε στην ενότητα Επιλογές μεταγλωττιστή πυρήνα JDT μια πλήρη λίστα των επιλογών που σχετίζονται με το μεταγλωττιστή και τις προεπιλογές τους.
Όταν ρυθμίζετε μέσω προγραμματισμού τις επιλογές για το εργαλείο δόμησης ή το μεταγλωττιστή, θα πρέπει να ορίσετε την εμβέλεια της επιλογής. Για παράδειγμα, ένα φίλτρο πόρων μπορεί να προορίζεται μόνο για ένα συγκεκριμένο έργο:
Hashtable options = myProject.getOptions(false); // get only the options set up in this project options.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, "*.ignore,META-INF/"); myProject.setOptions(options);
Η κλάση μεταγλωττιστή παρτίδας αρχείων κώδικα βρίσκεται στις εσωτερικές κλάσεις
της πρόσθετης λειτουργίας JDT Core. Το όνομα της κλάσης είναι org.eclipse.jdt.internal.compiler.batch.Main.
Η κλάση περιλαμβάνεται στο πακέτο
plugins/org.eclipse.jdt.core_3.2.0.jar
. Από την έκδοση 3.2, είναι
επίσης διαθέσιμη ξεχωριστά για μεταφόρτωση. Το όνομα του αρχείου είναι ecj.jar. Ο
αντίστοιχος πρωτογενής κώδικας είναι επίσης διαθέσιμος. Για να μεταφορτώσετε την
κλάση και τον αντίστοιχο πρωτογενή κώδικα, μεταβείτε στη
σελίδα μεταφορτώσεων
και αναζητήστε την ενότητα για το μεταγλωττιστή παρτίδων JDT Core (JDT Core
Batch Compiler). Αυτό το αρχείο jar περιλαμβάνει το μεταγλωττιστή παρτίδων και
τον προσαρμογέα javac Ant.
Ως εκ τούτου, μπορεί να χρησιμοποιηθεί ως ανεξάρτητη εφαρμογή καθώς και σε διεργασίες δόμησης Ant εκτός του Eclipse.
java -classpath org.eclipse.jdt.core_3.2.0.jar org.eclipse.jdt.internal.compiler.batch.Main -classpath rt.jar A.java
ή:
java -jar org.eclipse.jdt.core_3.2.0.jar -classpath rt.jar A.java
org.eclipse.jdt.internal.compiler.batch.Main.main(new String[] {"-classpath", "rt.jar", "A.java"});
Η μέθοδος compile(String)
είναι μια εύχρηστη μέθοδος για την κλήση του μεταγλωττιστή παρτίδας αρχείων κώδικα σε μια εφαρμογή java. Αντί του org.eclipse.jdt.internal.compiler.batch.Main.main(new String[] {"-classpath", "rt.jar", "A.java"});
μπορείτε απλά να γράψετε org.eclipse.jdt.internal.compiler.batch.Main.compile("-classpath rt.jar A.java");
Οι προτεινόμενες επιλογές είναι αυτές με το πορτοκαλί φόντο.
Όνομα | Χρήση | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Επιλογές διαδρομής κλάσεων | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-bootclasspath <dir 1>;<dir 2>;...;<dir P> | Είναι η λίστα των καταλόγων ή των αρχείων jar που
χρησιμοποιούνται για την εκκίνηση των αρχείων κλάσεων τα οποία χρησιμοποιεί ο
μεταγλωττιστής. Ως προεπιλογή χρησιμοποιούνται οι βιβλιοθήκες του VM που εκτελείται. Οι καταχωρήσεις διαχωρίζονται από το διαχωριστικό διαδρομής πλατφόρμας.
Κάθε κατάλογος ή κανόνας μπορεί να καθορίσει κανόνες πρόσβασης για είδη μεταξύ '[' και ']'. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cp -classpath <dir 1>;<dir 2>;...;<dir P> |
Είναι η λίστα των καταλόγων ή των αρχείων jar που
χρησιμοποιούνται για τη μεταγλώττιση των αρχείων πρωτογενή κώδικα. Η προεπιλεγμένη
τιμή είναι η τιμή της ιδιότητας "java.class.path". Οι καταχωρήσεις διαχωρίζονται από το διαχωριστικό διαδρομής πλατφόρμας.
Κάθε κατάλογος ή αρχείο μπορεί να καθορίσει κανόνες πρόσβασης για είδη μεταξύ '[' και ']' (π.χ. [-X] για απαγόρευση πρόσβασης στο είδος X, [~X] για μη συνιστώμενη πρόσβαση στο είδος X, [+p/X:-p/*] για απαγόρευση πρόσβασης σε όλα τα είδη του πακέτου p αλλά για πρόσβαση στο p/X). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-extdirs <dir 1>;<dir 2>;...;<dir P> | Είναι η λίστα των καταλόγων που χρησιμοποιούνται για τον προσδιορισμό της θέσης των αρχείων επέκτασης zip/jar. Οι καταχωρήσεις διαχωρίζονται από το διαχωριστικό διαδρομής πλατφόρμας. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-endorseddirs <dir 1>;<dir 2>;...;<dir P> | Είναι η λίστα των καταλόγων που χρησιμοποιούνται για τον προσδιορισμό της θέσης των εγκεκριμένων αρχείων zip/jar. Οι καταχωρήσεις διαχωρίζονται από το διαχωριστικό διαδρομής πλατφόρμας. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-sourcepath <dir 1>;<dir 2>;...;<dir P> | Είναι η λίστα των καταλόγων που χρησιμοποιούνται για τον
προσδιορισμό των αρχείων πρωτογενούς κώδικα. Οι καταχωρήσεις διαχωρίζονται από το διαχωριστικό διαδρομής πλατφόρμας.
Κάθε κατάλογος μπορεί να καθορίσει κανόνες πρόσβασης για είδη μεταξύ '[' και ']'. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-d <dir 1>|none | Χρησιμοποιείται για τον προσδιορισμό του καταλόγου στον οποίο θα πρέπει να καταγραφούν τα αρχεία .class που δημιουργούνται.
Αν παραλειφθεί, δεν δημιουργείται δομή καταλόγων πακέτου. Αν δεν θέλετε να δημιουργήσετε αρχεία .class, χρησιμοποιήστε το -d none. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-encoding <όνομα κωδικοποίησης> | Προσδιορίζει την προεπιλεγμένη μορφή κωδικοποίησης πρωτογενούς κώδικα. (Η προεπιλεγμένη κωδικοποίηση μπορεί επίσης να οριστεί σε επίπεδο αρχείου με την προσθήκη τους επιθήματος [<όνομα_κωδικοποίησης>] στο όνομα των φακέλων/αρχείων πρωτογενούς κώδικα. Για παράδειγμα, X.java[utf8].) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Επιλογές συμβατότητας | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-target 1.1|1.2|1.3|1.4|1.5|5|5.0|1.6|6|6.0 | Προσδιορίζει τη ρύθμιση του προορισμού του αρχείου .class.
Οι πιθανές τιμές είναι:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1.3 | Ορίζει το επίπεδο συμβατότητας 1.3. Αυτόματα -source 1.3 -target 1.1. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1.4 | Ορίζει το επίπεδο συμβατότητας 1.4 (προεπιλογή). Αυτόματα -source 1.3 -target 1.2. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1.5 | Ορίζει το επίπεδο συμβατότητας 1.5. Αυτόματα -source 1.5 -target 1.5. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1.6 | Ορίζει το επίπεδο συμβατότητας 1.6. Αυτόματα -source 1.6 -target 1.6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-source 1.3|1.4|1.5|5|5.0|1.6|6|6.0 | Χρησιμοποιείται για τον ορισμό του αναμενόμενου από το μεταγλωττιστή επιπέδου
πρωτογενούς κώδικα. Οι πιθανές τιμές είναι:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Επιλογές προειδοποίησης | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-warn:allDeprecation |
Ορίζει το επίπεδο προειδοποίησης. π.χ. -warn:unusedLocal,deprecation Με κόκκινο χρώμα εμφανίζονται οι προεπιλεγμένες ρυθμίσεις.
-warn:none απενεργοποίηση όλων των προειδοποιήσεων -warn:<warnings separated by ,> ενεργοποίηση μόνο των αναφερόμενων προειδοποιήσεων -warn:+<warnings separated by ,> ενεργοποίηση πρόσθετων προειδοποιήσεων -warn:-<warnings separated by ,> απενεργοποίηση συγκεκριμένων προειδοποιήσεων
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-nowarn | Καμία προειδοποίηση (ισοδύναμη της -warn:none) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-deprecation | Ισοδύναμη της -warn:deprecation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Επιλογές εντοπισμού και διόρθωσης σφαλμάτων | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-g[:none|:lines,vars,source] | Ορισμός του επιπέδου γνωρισμάτων της λειτουργίας εντοπισμού και διόρθωσης σφαλμάτων
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-preserveAllLocals | Ρητή υποβολή αιτήματος προς το μεταγλωττιστή για τη διατήρηση όλων των τοπικών μεταβλητών (για λόγους εντοπισμού και διόρθωσης σφαλμάτων). Αν παραλειφθεί, ο μεταγλωττιστής θα αφαιρεί τις μη χρησιμοποιούμενες τοπικές μεταβλητές. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Επιλογές που παραβλέπονται (για συμβατότητα με επιλογές javac) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-J<option> | επιλογή μεταβίβασης στο VM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-X<option> | καθορισμός μη τυπικής επιλογής (Η επιλογή -Xemacs παραβλέπεται.) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-X | εκτύπωση μη τυπικών επιλογών και έξοδος | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-O | βελτιστοποίηση για χρόνο εκτέλεσης | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ειδικές επιλογές | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@<file> | Ανάγνωση ορισμάτων γραμμής εντολών από αρχείο | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-maxProblems <n> | Μέγιστος αριθμός προβλημάτων ανά μονάδα μεταγλώττισης (από προεπιλογή 100) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-log <filename> | Προσδιορισμός ενός αρχείου καταγραφής όπου καταγράφονται όλα τα δεδομένα εξόδου από το μεταγλωττιστή. Αυτή είναι ιδιαίτερα χρήσιμη όταν θέλετε να πραγματοποιήσετε εντοπισμό και διόρθωση σφαλμάτων στο μεταγλωττιστή παρτίδας αρχείων κώδικα ή να λάβετε ένα αρχείο το οποίο περιέχει όλα τα σφάλματα και τις προειδοποιήσεις από μια διεργασία δόμησης παρτίδας έργων. Αν η επέκταση είναι .xml, το αρχείο καταγραφής που θα δημιουργηθεί θα είναι ένα αρχείο xml. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-Xemacs | Χρήση του στυλ emacs για την παρουσίαση των θέσεων των προειδοποιήσεων και των
σφαλμάτων στην κονσόλα και στα κανονικά αρχεία καταγραφής (αρχεία μορφής
κειμένου). Τα αρχεία καταγραφής XML δεν επηρεάζονται από αυτή την επιλογή. Όταν
αυτή η επιλογή είναι ενεργοποιημένη, το μήνυμα:
2. ΠΡΟΕΙΔΟΠΟΙΗΣΗ σε /workspace/X.java θα εμφανίζεται ως εξής:
/workspace/X.java:8: warning: Η μέθοδος... |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-proceedOnError | Συνέχιση της μεταγλώττισης παρά τα σφάλματα. Θα γίνεται καταγραφή των αρχείων κλάσεων με προβληματικές μεθόδους ή είδη προβλημάτων. Συνιστάται μόνο για την περίπτωση που θέλετε να έχετε τη δυνατότητα εκτέλεσης της εφαρμογής σας ακόμη κι αν παραμένουν κάποια σφάλματα. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-verbose | Εκτύπωση μονάδων μεταγλώττισης στις οποίες έχει πραγματοποιηθεί πρόσβαση/επεξεργασία, στην κονσόλα ή στο αρχείο καταγραφής, αν καθορίζεται. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-referenceInfo | Υπολογισμός πληροφοριών παραπομπών. Χρησιμοποιείται μόνο αν υπάρχει σύνδεση με το εργαλείο δόμησης. Διαφορετικά, οι πληροφορίες παραπομπών είναι άχρηστες. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-progress | Εμφάνιση προόδου (μόνο στην κατάσταση λειτουργίας -log) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-time | Εμφάνιση πληροφοριών ταχύτητας | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-noExit | Δεν θα καλείται η μέθοδος System.exit(n) στο τέλος της μεταγλώττισης (n=0 αν δεν υπάρχει σφάλμα). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-repeat <n> | Επανάληψη της διεργασίας μεταγλώττισης <n> φορές (για ανάλυση perf). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-inlineJSR | Ένθεση κώδικα byte JSR (αυτόματα αν ο προορισμός >= 1.5) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-enableJavadoc | λαμβάνονται υπόψη παραπομπές σε javadoc. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Βοηθητικές επιλογές | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-? -? -help | Εμφανίζει το μήνυμα βοήθειας. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-v -version | Εμφάνιση του αριθμού δόμησης του μεταγλωττιστή. Πολύ χρήσιμη για την αναφορά ενός σφάλματος. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-showversion | Εμφάνιση του αριθμού δόμησης του μεταγλωττιστή και συνέχεια. Πολύ χρήσιμη για την αναφορά ενός σφάλματος. |
d:\temp -classpath rt.jar -time -g -d d:/tmp
|
Μεταγλωττίζει όλα τα αρχεία πρωτογενούς κώδικα του καταλόγου d:\temp και των υποφακέλων. Η διαδρομή κλάσεων είναι απλά rt.jar. Δημιουργεί όλα τα γνωρίσματα εντοπισμού και διόρθωσης σφαλμάτων και όλα τα αρχεία .class που προκύπτουν καταγράφονται στον κατάλογο d:\tmp. Η ταχύτητα του μεταγλωττιστή θα εμφανιστεί μόλις η διεργασία ομαδοποίησης σε παρτίδες ολοκληρωθεί. |
d:\temp\Test.java -classpath d:\temp;rt.jar -g:none
|
Μεταγλωττίζει μόνο το Test.java και τα εξαρτώμενα από αυτό αρχεία (αν υπάρχουν). Τα εξαρτώμενα αρχεία ανακτώνται από τον κατάλογο d:\temp. Η διαδρομή κλάσεων είναι ο κατάλογος d:\temp συνοδευόμενος από το rt.jar. Αυτό σημαίνει ότι όλες οι απαραίτητες κλάσεις αναζητούνται πρώτα στον κατάλογο d:\temp και μετά στο rt.jar. Δεν δημιουργεί γνωρίσματα εντοπισμού και διόρθωσης σφαλμάτων και όλα τα αρχεία .class που προκύπτουν καταγράφονται στον κατάλογο d:\tmp. |
<?xml version="1.0" encoding="UTF-8"?> <project name="compile" default="main" basedir="../."> <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> <property name="root" value="${basedir}/src"/> <property name="destdir" value="d:/temp/bin" /> <target name="main"> <javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4"> <classpath> <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/> </classpath> </javac> </target> </project>Η σύνταξη που χρησιμοποιείται για την εργασία javac Ant δίνεται στην Τεκμηρίωση εργασιών Ant javac. Αυτός ο προσαρμογέας υποστηρίζει τις εκδοχές εργασιών Javac Ant από 1.4.1 έως 1.6.5.
Αν χρησιμοποιείτε μια εκδοχή νεότερη της 1.5.0, μπορείτε να χρησιμοποιήσετε το στοιχείο ένθετου ορίσματος μεταγλωττιστή για να προσδιορίσετε τις συγκεκριμένες επιλογές του μεταγλωττιστή.
... <javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4"> <classpath> <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/> </classpath> <compilerarg compiler="org.eclipse.jdt.core.JDTCompilerAdapter" line="-1.5 -warn:+boxing"/> </javac> ...
Για να μην λαμβάνετε σενάρια τα οποία εξαρτώνται από το μεταγλωττιστή,
συνιστάται η χρήση του ορίσματος μεταγλωττιστή με τη ρύθμιση
org.eclipse.jdt.core.JDTCompilerAdapter
. Χωρίς τη ρύθμιση αυτή, το σενάριο θα μπορεί να χρησιμοποιηθεί μόνο με το μεταγλωττιστή Eclipse. Αν έχετε πραγματοποιήσει τη ρύθμιση, το ένθετο όρισμα μεταγλωττιστή θα παραβλέπεται, αν το όνομα είναι διαφορετικό από το όνομα του μεταγλωττιστή που προσδιορίζεται στην ιδιότητα build.compiler
.
Ο πυρήνας JDT ορίζει έναν εξειδικευμένο δείκτη (είδος δείκτη "org.eclipse.jdt.core.problem ") για τη δήλωση προβλημάτων μεταγλώττισης. Για να ανακαλύψετε μέσω προγραμματισμού τα προβλήματα που εντοπίζονται από το μεταγλωττιστή, θα πρέπει να χρησιμοποιήσετε το τυπικό πρωτόκολλο δεικτών πλατφόρμας. Ανατρέξτε στην ενότητα Δείκτες πόρων για μια επισκόπηση της χρήσης των δεικτών.
Το παρακάτω τμήμα κώδικα βρίσκει όλους τους δείκτες προβλημάτων Java σε μια μονάδα μεταγλώττισης.
public IMarker[] findJavaProblemMarkers(ICompilationUnit cu) throws CoreException { IResource javaSourceFile = cu.getUnderlyingResource(); IMarker[] markers = javaSourceFile.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); }
Οι δείκτες προβλημάτων Java διατηρούνται από το εργαλείο δόμησης έργων Java και αφαιρούνται αυτόματα με την επίλυση των προβλημάτων και την αναμεταγλώττιση του πόρου Java.
Η τιμή της ταυτότητας του προβλήματος καθορίζεται με βάση μία από τις σταθερές που ορίζονται στη διεπαφή IProblem. Η ταυτότητα του προβλήματος είναι αξιόπιστη, αλλά το μήνυμα τροποποιείται τοπικά και επομένως μπορεί να αλλάξει ανάλογα με τις προεπιλεγμένες τοπικές ρυθμίσεις. Οι σταθερές που ορίζονται στη διεπαφή IProblem είναι περιγραφικές.
Θα πρέπει να ορίζεται μια υλοποίηση της IProblemRequestor για τη συλλογή των προβλημάτων που εντοπίζονται κατά τη διάρκεια μιας λειτουργίας Java. Τα αντίγραφα εργασιών μπορούν να διευθετηθούν με τον εντοπισμό προβλημάτων, αν έχει παρασχεθεί μια διεπαφή IProblemRequestor για τη δημιουργία αντιγράφου εργασίας. Για να το επιτύχετε, μπορείτε να χρησιμοποιήσετε τη μέθοδο reconcile. Ακολουθεί ένα παράδειγμα:
ICompilationUnit unit = ..; // get some compilation unit
// create requestor for accumulating discovered problems
IProblemRequestor problemRequestor = new IProblemRequestor() {
public void acceptProblem(IProblem problem) {
System.out.println(problem.getID() + ": " + problem.getMessage());
}
public void beginReporting() {}
public void endReporting() {}
public boolean isActive() { return true; } // will detect problems if active
};
// use working copy to hold source with error
ICompilationUnit workingCopy = unit.getWorkingCopy(new WorkingCopyOwner() {}, problemRequestor, null);
((IOpenable)workingCopy).getBuffer().setContents("public class X extends Zork {}");
// trigger reconciliation
workingCopy.reconcile(NO_AST, true, null, null);
Μπορείτε να προσθέσετε μια ενέργεια στα προβλήματα που αναφέρονται στη μέθοδο acceptProblem(IProblem). Στο παράδειγμα αυτό, το πρόβλημα που αναφέρεται είναι ότι το Zork δεν μπορεί να αναλυθεί ή δεν είναι έγκυρη υπερκλάση και η ταυτότητά του είναι IProblem.SuperclassNotFound.
SuppressWarnings
Το Java 5.0 παρέχει στο χρήστη την επιλογή να απενεργοποιήσει τις
προειδοποιήσεις μεταγλώττισης που είναι σχετικές με ένα υποσύνολο μονάδας μεταγλώττισης
χρησιμοποιώντας τη σημείωση java.lang.SuppressWarning
.
@SuppressWarning("unused") public void foo() { String s; }
Χωρίς τη σημείωση, ο μεταγλωττιστής θα εμφανίσει μήνυμα προειδοποίησης ότι η τοπική
μεταβλητή s
δεν χρησιμοποιείται.
Αν υπάρχει η σημείωση, ο μεταγλωττιστής θα αγνοήσει "σιωπηρά" την προειδοποίηση
αυτή τοπικά στη μέθοδο foo
. Αυτό επιτρέπει τη διατήρηση των προειδοποιήσεων σε
άλλες θέσεις τις ίδιας μονάδας μεταγλώττισης ή του ίδιου έργου.
Η λίστα των στοιχείων που μπορούν να χρησιμοποιηθούν μέσα σε μια σημείωση του
SuppressWarning
είναι τα εξής: