EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

ajc - Online în cloud

Rulați ajc în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda ajc care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


ajc — compilator și țesător de bytecode pentru limbajele AspectJ și Java

REZUMAT


AJC [Opţiuni] [fişier... | @fişier... | -argfile fişier... ]

Descriere


AJC comanda compilează și țese fișierele sursă și .class AspectJ și Java, producând
Fișierele .class compatibile cu orice VM Java (1.1 sau mai recent). Combină compilarea și
țeserea bytecode și acceptă versiuni incrementale; de asemenea, puteți țese bytecode în timpul rulării
folosind "" >.

Argumentele de după opțiuni specifică fișierele sursă de compilat. Pentru a specifica sursa
cursuri, utilizare -în cale (de mai jos). Fișierele pot fi listate direct pe linia de comandă sau într-un
fişier. -argfile fişier și @fişier formele sunt echivalente și sunt interpretate ca sens
toate argumentele enumerate în fișierul specificat.

Notă: Trebuie să treci în mod explicit AJC toate sursele necesare. Asigurați-vă că includeți sursa
nu numai pentru aspectele sau punctele de tăiere, ci și pentru orice tip afectat. Precizând toate
surse este necesar deoarece, spre deosebire de javac, ajc nu caută calea sursă
clase. (Pentru o discuție despre tipurile afectate ar putea fi necesare, consultați AspectJ
Programare Ghid, Punerea în aplicare Apendice ../progguide/implementation.html) .

Pentru a specifica sursele, puteți lista fișierele sursă ca argumente sau puteți utiliza opțiunile -sourceroots
or -în cale. Dacă există mai multe surse pentru orice tip, rezultatul este nedefinit deoarece ajc
nu are nicio modalitate de a determina care sursă este corectă. (Acest lucru se întâmplă cel mai adesea când utilizatorii
includeți directorul de destinație pe calea de intrare și reconstruiți.)

Opţiuni
-injaruri JarList
depreciat: din 1.2, utilizați -inpath, care preia și directoare.

-în cale Cale
Acceptați ca cod de octet sursă orice fișiere .class din Ieșirea le va include
clase, eventual țesute cu orice aspecte aplicabile. Calea este una singură
argument care conține o listă de căi către fișiere sau directoare zip, delimitate de
delimitatorul de cale specific platformei.

- calea aspectului Cale
Țesuți aspecte binare din fișierele jar și directoarele pe cale către toate sursele.
Aspectele ar fi trebuit să fie scoase de către aceeași versiune a compilatorului. Când
rulând clasele de ieșire, clasa de rulare ar trebui să conțină toate căile de aspect
intrări. Calea, ca și classpath, este un singur argument care conține o listă de căi
la fișierele jar, delimitate de delimitatorul classpath specific platformei.

-argfile Fișier
Fișierul conține o listă de argumente delimitată de linii. Fiecare linie din fișier
ar trebui să conțină o opțiune, nume de fișier sau șir de argumente (de exemplu, o cale de clasă sau
inpath). Argumentele citite din fișier sunt inserate în lista de argumente pentru
comanda. Căile relative din fișier sunt calculate din director
care conține fișierul (nu directorul de lucru curent). Comentarii, ca în Java,
începe cu // și se extinde până la capătul liniei. Opțiuni specificate în argument
fișierele pot suprascrie în loc să extindă valorile opțiunilor existente, așa că evitați
specificând opțiuni precum -calea de clasă în fișierele de argumente spre deosebire de
fișierul argument este singura specificație de construcție. Forma @fişier este la fel ca
precizând -argfile fişier.

-outjar ieșire.jar
Puneți clase de ieșire în fișierul zip output.jar.

-outxml Generați fișierul aop.xml pentru țeserea în timpul încărcării cu numele implicit.

-outxmlfile personalizat/aop.xml
Generați fișierul aop.xml pentru țeserea în timpul încărcării cu nume personalizat.

- incremental
Rulați compilatorul continuu. După compilarea inițială, compilatorul va
așteptați să recompilați până când citește o nouă linie din intrarea standard și o va face
ieșiți când se citește un „q”. Va recompila doar componentele necesare, deci a
recompilarea ar trebui să fie mult mai rapidă decât a face o a doua compilare. Este nevoie de
-sourceroots.

-sourceroots DirPaths
Găsiți și construiți toate fișierele sursă .java sau .aj în orice director listat în
DirPaths. DirPaths, ca și classpath, este un singur argument care conține o listă de
căi către directoare, delimitate de delimitatorul classpath specific platformei.
Necesar prin -incremental.

-refurile încrucișate
Generați un fișier .ajsym de compilare în directorul de ieșire. Folosit pentru vizionare
referințe transversale prin instrumente precum browserul AspectJ.

-emacssym Generați fișiere de simbol .ajesym pentru suportul emacs (învechit).

-Xlint La fel ca -Xlint:avertisment (activat implicit)

-Xlint:{nivel}
Setați nivelul implicit pentru mesajele despre potențiale greșeli de programare în
cod transversal. {level} poate fi ignorat, avertisment sau eroare. Aceasta anulează
intrări în org/aspectj/weaver/XlintDefault.properties din aspectjtools.jar, dar
nu anulează nivelurile setate folosind opțiunea -Xlintfile.

-Xlintfile PropertyFile
Specificați fișierul de proprietăți pentru a seta niveluri pentru anumite mesaje transversale.
PropertyFile este o cale către un fișier Java .properties care are aceeași proprietate
nume și valori ca org/aspectj/weaver/XlintDefault.properties din
aspectjtools.jar, pe care îl suprascrie și el.

-help Emite informații despre opțiunile și utilizarea compilatorului

-version Emite versiunea compilatorului AspectJ

-calea de clasă Cale
Specificați unde să găsiți fișierele de clasă de utilizator. Calea este un singur argument care conține a
listă de căi către fișiere sau directoare zip, delimitate de specificul platformei
delimitator de cale.

-bootclasspath Cale
Ignorați locația căii de pornire a clasei de pornire a VM în scopul evaluării tipurilor când
compilarea. Calea este un singur argument care conține o listă de căi către fișierele zip sau
directoare, delimitate de delimitatorul de cale specific platformei.

-extdirs Cale
Ignorați locația directoarelor de extensie ale VM în scopul evaluării tipurilor
la compilare. Calea este un singur argument care conține o listă de căi către
directoare, delimitate de delimitatorul de cale specific platformei.

-d director
Specificați unde să plasați fișierele .class generate. Dacă nu este specificat, director
implicit la directorul curent de lucru.

-ţintă [1.1 la 1.5]
Specificați setarea țintă a fișierului de clasă (1.1 până la 1.5, implicit este 1.2)

-1.3 Setați nivelul de conformitate la 1.3 Aceasta implică -sursă 1.3 și -țintă 1.1.

-1.4 Setați nivelul de conformitate la 1.4 (implicit) Aceasta implică -sursă 1.4 și -țintă 1.2.

-1.5 Setați nivelul de conformitate la 1.5. Aceasta implică -sursă 1.5 și -țintă 1.5.

-sursă [1.3|1.4|1.5]
Comutați aserțiunile (1.3, 1.4 sau 1.5 - implicit este 1.4). Când utilizați -source 1.3,
o instrucțiune assert() valabilă sub Java 1.4 va avea ca rezultat o eroare a compilatorului.
Când utilizați -source 1.4, tratați afirma ca cuvânt cheie și implementați aserțiuni
conform specificațiilor de limbă 1.4. Când utilizați -source 1.5, limbajul Java 5
caracteristicile sunt permise.

-nowarn Nu emite avertismente (echivalent cu „-warn:none”) Acest lucru nu suprimă mesajele
generat de declara de avertizare or Xlint.

-a avertiza: articole
Emiteți avertismente pentru orice instanță a listei de coduri îndoielnice delimitate prin virgulă
(de exemplu, '-warn:unusedLocals,deprecation'):

metoda constructorName cu numele constructorului
packageDefaultMethod încercarea de a suprascrie metoda implicită a pachetului
utilizarea deprecierii tipului sau membrului depreciat
maskedCatchBlocks bloc de captură ascuns
Variabila locală unusedLocals nu a fost citită niciodată
Argumentul metodei unusedArguments nu a fost citit niciodată
Declarația de import unusedImports nu este utilizată de codul din fișier
niciunul nu suprimă toate avertismentele compilatorului

-warn:niciuna nu suprimă mesajele generate de declara de avertizare or Xlint.

-dezaprobare
La fel ca -warn:deprecation

-noImportError
Nu trimiteți erori pentru importurile nerezolvate

-proceedOnError
Continuați să compilați după eroare, aruncând fișiere de clasă cu metode problematice

-g:[linii,variabile,sursa]
nivel de atribute de depanare, care poate lua trei forme:

-g toate informațiile de depanare ('-g:lines,vars,source')
-g:none fără informații de depanare
-g:{items} informații de depanare pentru oricare/toate [linii, vars, sursă], de exemplu,
-g:linii,sursa

-preserve AllLocals
Păstrați toate variabilele locale în timpul generării codului (pentru a facilita depanarea).

-referenceInfo
Calculați informații de referință.

-codare format
Specificați formatul implicit de codare sursă. Specificați codificare personalizată pentru fiecare fișier
baza prin sufixarea fiecărui nume de fișier/dosar sursă de intrare cu „[encoding]”.

-verbose Emite mesaje despre unitățile de compilare accesate/procesate

-showWeaveInfo
Emite mesaje despre țesut

-Buturuga fişier Specificați un fișier jurnal pentru mesajele compilatorului.

-progress Arată progresul (necesită modul -log).

-time Afișează informații despre viteză.

-noExit Nu apelați System.exit(n) la sfârșitul compilației (n=0 dacă nu există nicio eroare)

-repeta N Repetați procesul de compilare de N ori (de obicei, pentru a face o analiză de performanță).

-XterminateAfterCompilation
Determină terminarea compilatorului înainte de țesere

-XaddSerialVersionUID
Determină compilatorul să calculeze și să adauge câmpul SerialVersionUID la orice tip
implementarea Serializable care este afectată de un aspect. Câmpul este
calculat pe baza clasei înainte ca țeserea să aibă loc.

-Xreweavable[:compress]
(Experimental - depreciat ca acum implicit) Rulează Weaver în modul reweavable care
determină să creeze clase țesute care pot fi țesute, sub rezerva
restricție că la încercarea unei rețese toate tipurile care recomandau țesutul
tipul trebuie să fie accesibil.

-XnoInline
(Experimental) nu vă aliniați la sfaturi

-XincrementalFile fişier
(Experimental) Funcționează ca modul incremental, dar folosind un fișier mai degrabă decât
intrare standard pentru a controla compilatorul. Se va recompila de fiecare dată când este fișierul
schimbat și opriți când fișierul este șters.

-XserializableAspects
(Experimental) În mod normal, este o eroare să declari aspectele Serializabile. Acest
opțiunea elimină această restricție.

-XnotReweavable
(Experimental) Creați fișiere de clasă care nu pot fi ulterior țesute de AspectJ.

-Xajruntimelevel:1.2, ajruntimelevel:1.5
(Experimental) Permite generarea de cod care vizează un nivel 1.2 sau 1.5
Timpul de rulare AspectJ (implicit 1.5)

Fișier nume
ajc acceptă fișiere sursă fie cu .Java extensia sau .aj extensie. Noi
utilizați în mod normal .Java pentru toate fișierele noastre dintr-un sistem AspectJ -- fișiere care conțin aspecte
precum și fișierele care conțin clase. Cu toate acestea, dacă aveți nevoie de mecanic
distingeți fișierele care folosesc funcționalitatea suplimentară AspectJ de cele care sunt pure
Java vă recomandăm să utilizați .aj extensia pentru acele fișiere.

Am dori să descurajăm alte mijloace de distincție mecanică, cum ar fi convențiile de numire
sau sub-pachete în favoarea .aj extensie.

· Convențiile de nume de fișiere sunt greu de aplicat și duc la nume incomode pentru aspectele dvs.
În loc de TracingAspect.java vă recomandăm să utilizați Trasare.aj (sau doar Urmărire.java)
in schimb.

· Sub-pachetele mută aspecte din locul lor natural într-un sistem și pot crea un
nevoie artificială de aspecte privilegiate. În loc să adăugați un sub-pachet ca
aspecte vă recomandăm să utilizați .aj extensia și includerea acestor fișiere în fișierul dvs
în schimb pachetele existente.

Compatibilitate
AspectJ este o extensie compatibilă cu limbajul de programare Java. Compilatorul AspectJ
aderă la Java Limbă caietul de sarcini, Al doilea Ediție (CARTE)
http://java.sun.com/docs/books/jls/index.html și la Java Virtual Mașină
Specificație, Al doilea Ediție (CARTE) http://java.sun.com/docs/books/vmspec/index.html și
rulează pe orice platformă compatibilă cu Java 2. Codul pe care îl generează rulează pe orice Java 1.1 sau
platformă compatibilă ulterior. Pentru mai multe informații despre compatibilitatea cu Java și cu
versiunile anterioare ale AspectJ, vezi "" >.

Exemple
A simplu exemplu

Compilați două fișiere:

ajc HelloWorld.java Trace.java

An exemplu folosind -argfile/@

Pentru a evita specificarea numelor de fișiere pe linia de comandă, listați fișierele sursă într-o linie delimitată
text argfile. Căile fișierului sursă pot fi absolute sau relative la fișierul arg și pot
includeți alte fișiere arg prin @-reference. Următorul fișier surse.lst conține
fișiere absolute și relative și @-references:

Gui.java
/home/user/src/Library.java
date/Repository.java
date/Acces.java
@../../common/common.lst
@/home/user/src/lib.lst
view/body/ArrayView.java

Compilați fișierele folosind formularul -argfile sau @:

ajc -argfile sources.lst
ajc @sources.lst

Fișierele Arg sunt acceptate și de jikes și javac, astfel încât să puteți utiliza fișierele în versiuni hibride.
Cu toate acestea, suportul variază:

· Numai ajc acceptă opțiuni de linie de comandă

· Jikes și Javac nu acceptă referințe interne @argfile.

· Jikes și Javac acceptă numai formularul @file de pe linia de comandă.

An exemplu folosind -în cale și - calea aspectului

Teserea bytecode folosind -inpath: AspectJ 1.2 acceptă țeserea fișierelor .class în zip/jar de intrare
fișiere și directoare. Utilizarea borcanelor de intrare este ca și cum ați compila fișierele sursă corespunzătoare,
și toate binarele sunt emise la ieșire. Deși compilatoarele compatibile cu Java pot diferi în
ieșirea lor, ajc ar trebui să ia ca intrare orice fișiere de clasă produse de javac, jikes, eclipse,
și, desigur, ajc. Aspectele incluse în -inpath vor fi țesute ca și alte .class
fișiere și vor afecta alte tipuri, ca de obicei.

Biblioteci Aspect care utilizează -aspectpath: AspectJ 1.1 acceptă țeserea din biblioteci numai pentru citire
conţinând aspecte. La fel ca borcanele de intrare, ele afectează toate intrările; spre deosebire de borcanele de intrare, acestea
ele însele nu sunt afectate sau emise ca ieșire. Surse compilate cu biblioteci de aspecte
trebuie să fie rulat cu aceleași biblioteci de aspect pe calea lor de clasă.

Următorul exemplu construiește exemplul de urmărire într-un mediu de linie de comandă; creeaza
o bibliotecă de aspecte numai pentru citire, compilează unele clase pentru a fi utilizate ca cod de octet de intrare și compilează
clasele și alte surse cu biblioteca de aspecte.

Exemplul de urmărire este în distribuția AspectJ ({aspectj}/doc/examples/tracing). Acest
folosește următoarele fișiere:

aspectj1.1/
cos/
AJC
lib /
aspectjrt.jar
exemple /
urmărire/
Cerc.java
ExempluMain.java
lib /
AbstractTrace.java
TraceMyClasses.java
nottrace.lst
Pătrat.java
tracelib.lst
tracev3.lst
TwoDShape.java
versiunea 3/
Trace.java
TraceMyClasses.java

Mai jos, separatorul de cale este considerat „;”, dar separatorii de fișiere sunt „/”. Toate comenzile sunt
pe o linie. Ajustați căile și comenzile la mediul dvs. după cum este necesar.

Configurați calea, calea clasei și directorul curent:

exemple de cd
export ajrt=../lib/aspectjrt.jar
export CLASSPATH="$ajrt"
export PATH="../ cos:$PATH"

Creați o bibliotecă de urmărire numai pentru citire:

ajc -argfile tracing/tracelib.lst -outjar tracelib.jar

Construiți aplicația cu urmărire într-un singur pas:

ajc -aspectpath tracelib.jar -argfile tracing/notrace.lst -outjar tracedapp.jar

Rulați aplicația cu urmărire:

java -classpath „$ajrt;tracedapp.jar;tracelib.jar” urmărire.ExampleMain

Construiți aplicația cu urmărire din binare în doi pași:

· (a) Construiți clasele aplicației (folosind javac de dragul demonstrației):

clasele mkdir
javac -d clase de urmărire/*.java
jar cfM app.jar -C clase .

· (b) Construiți aplicația cu urmărire:

ajc -inpath app.jar -aspectpath tracelib.jar -outjar tracedapp.jar

Rulați aplicația cu urmărire (la fel ca mai sus):

java -classpath „$ajrt;tracedapp.jar;tracelib.jar” urmărire.ExampleMain

Rulați aplicația fără urmărire:

java -classpath "app.jar" urmărire.ExampleMain

AspectJ compilator API
Compilatorul AspectJ este implementat complet în Java și poate fi apelat ca o clasă Java.
Singura interfață care ar trebui considerată publică sunt metodele publice în
org.aspectj.tools.ajc.Main. De exemplu, main(Șir[] argumente) ia standardul AJC comandă
argumente de linie. Aceasta înseamnă că o modalitate alternativă de a rula compilatorul este

Java org.aspectj.tools.ajc.Main [opțiune...] [fişier...]

Pentru a accesa mesajele compilatorului în mod programatic, utilizați metodele setHolder(IMessageHolder
titular) şi / sau rula(Șir[] argumente, IMessageHolder titular). AJC raportează fiecare mesaj către
suport folosind IMessageHolder.handleMessage(..). Dacă doriți doar să colectați mesajele,
utilizare MessageHandler ca al tau IMessageHolder. De exemplu, compilați și rulați fișierul
urmând cu aspectjtools.jar pe calea clasei:

import org.aspectj.bridge.*;
import org.aspectj.tools.ajc.Main;
import java.util.Arrays;

clasă publică WrapAjc {
public static void main (String [] args) {
Compilatorul principal = new Main();
MessageHandler m = new MessageHandler();
compiler.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("mesaje: " + Arrays.asList(Domnișoară));
}
}

Stivui urme și il Fișier sursă atribut
Spre deosebire de compilatoarele java tradiționale, compilatorul AspectJ poate genera în anumite cazuri
classfiles din mai multe fișiere sursă. Din păcate, formatul de fișier de clasă Java original
nu acceptă mai multe atribute SourceFile. Pentru a vă asigura că toate fișierele sursă
informațiile sunt disponibile, compilatorul AspectJ poate, în unele cazuri, să codifice mai multe nume de fișiere
în atributul SourceFile. Când VM-ul Java generează urme de stivă, îl folosește
atribut pentru a specifica fișierul sursă.

(Compilatorul AspectJ 1.0 acceptă și extensiile de fișiere .class ale JSR-45. Acestea
permite depanatoarelor compatibile (cum ar fi jdb în Java 1.4.1) să identifice fișierul și linia potrivite
chiar și date multe fișiere sursă pentru o singură clasă. Suportul JSR-45 este planificat pentru ajc in
AspectJ 1.1, dar nu se află în versiunea inițială. Pentru a obține fișiere .class complet depanabile, utilizați
opțiunea -XnoInline.)

Probabil că singura dată când vedeți acest format este atunci când vizualizați urmele stivei, unde vă aflați
poate întâlni urme ale formatului

java.lang.NullPointerException
la Main.new$constructor_call37(Main.java;SynchAspect.java[1k]:1030)

unde in loc de obisnuit

Fișier:LineNumber

format, vezi

File0;File1[Number1];File2[Number2] ... :LineNumber

În acest caz, LineNumber este decalajul obișnuit în linii plus „linia de început” a realului
fișier sursă. Aceasta înseamnă că utilizați LineNumber atât pentru a identifica fișierul sursă, cât și pentru a găsi
linia în cauză. Numărul dintre [paranteze] după fiecare fișier vă indică „startul” virtual
line" pentru acel fișier (primul fișier are un început de 0).

În exemplul nostru din urma excepției pointerului nul, linia de început virtuală este 1030.
Deoarece fișierul SynchAspect.java „începe” la linia 1000 [1k], LineNumber indică linia
30 din SynchAspect.java.

Deci, atunci când se confruntă cu astfel de urme de stivă, modalitatea de a găsi locația reală a sursei este să
uitați-vă prin lista de numere din „linia de început” pentru a-l găsi pe cel de sub linia afișată
număr. Acesta este fișierul în care locația sursă poate fi găsită de fapt. Apoi, scade
acea „linie de pornire” de la numărul de linie afișat pentru a găsi numărul real de linie din acesta
fișier.

Într-un fișier de clasă care provine dintr-un singur fișier sursă, compilatorul AspectJ generează
Atributele SourceFile compatibile cu compilatoarele tradiționale Java.

AJC(1)

Utilizați ajc online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

Comenzi Linux

Ad