EngelsFransSpaans

Ad


OnWorks-favicon

ajc - Online in de cloud

Voer ajc uit in OnWorks gratis hostingprovider via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht ajc die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


ajc — compiler en bytecode-wever voor de AspectJ- en Java-talen

KORTE INHOUD


AJC [Opties] [bestand ... | @bestand ... | -argbestand bestand ... ]

Omschrijving


De AJC commando compileert en weeft AspectJ- en Java-bron- en .class-bestanden, waardoor
.class-bestanden die compatibel zijn met elke Java-VM (1.1 of hoger). Het combineert compilatie en
bytecode weven en ondersteunt incrementele builds; je kunt ook bytecode weven tijdens runtime
gebruik "" >.

De argumenten achter de opties specificeren de bronbestand(en) die moeten worden gecompileerd. Bron specificeren:
klassen, gebruik -inpad (onderstaand). Bestanden kunnen direct op de opdrachtregel worden weergegeven of in a
het dossier. De -argbestand filet en @filet vormen zijn equivalent en worden geïnterpreteerd als betekenis
alle argumenten in het opgegeven bestand.

Opmerking: Je moet expliciet slagen AJC alle benodigde bronnen. Vermeld zeker de bron
niet alleen voor de aspecten of pointcuts, maar ook voor alle getroffen typen. Alles specificeren
sources is nodig omdat ajc, in tegenstelling tot javac, niet in het bronpad zoekt
klassen. (Voor een bespreking van welke getroffen typen nodig kunnen zijn, zie: De AspectJ
Programming Gids, Implementatie Bijlage ../progguide/implementatie.html) .

Om bronnen te specificeren, kunt u bronbestanden als argumenten weergeven of de opties gebruiken -bronwortels
or -inpad. Als er meerdere bronnen zijn voor elk type, is het resultaat niet gedefinieerd omdat ajc
heeft geen manier om te bepalen welke bron correct is. (Dit gebeurt het vaakst wanneer gebruikers
neem de doelmap op in het inpath en herbouw.)

Opties
-injar JarLijst
verouderd: gebruik sinds 1.2 -inpath, dat ook mappen nodig heeft.

-inpad Pad
Accepteer als bronbytecode alle .class-bestanden in de De uitvoer zal deze bevatten
klassen, eventueel verweven met eventueel van toepassing zijnde aspecten. Pad is een single
argument dat een lijst met paden naar zip-bestanden of mappen bevat, gescheiden door
het platformspecifieke padscheidingsteken.

-aspectpad Pad
Weef binaire aspecten van jar-bestanden en mappen op pad naar alle bronnen.
De aspecten zouden door dezelfde versie van de compiler moeten zijn uitgevoerd. Wanneer
het uitvoeren van de uitvoerklassen, het run classpath moet alle aspectpath bevatten
inzendingen. Pad is, net als klassenpad, een enkel argument dat een lijst met paden bevat
naar jar-bestanden, begrensd door het platformspecifieke scheidingsteken voor klassenpaden.

-argbestand Dien in
Het bestand bevat een door regels gescheiden lijst met argumenten. Elke regel in het bestand
moet één optie, bestandsnaam of argumentstring bevatten (bijv. een klassenpad of
inpad). Argumenten die uit het bestand worden gelezen, worden ingevoegd in de lijst met argumenten voor
het bevel. Relatieve paden in het bestand worden berekend vanuit de map
dat het bestand bevat (niet de huidige werkdirectory). Opmerkingen, zoals in Java,
beginnen met // en strekken zich uit tot het einde van de lijn. Opties gespecificeerd in argument
bestanden kunnen bestaande optiewaarden overschrijven in plaats van uitbreiden, dus vermijd
opties opgeven zoals -klassenpad in argumentbestanden in tegenstelling tot de
argument bestand is de enige build-specificatie. Het formulier @het dossier is hetzelfde als
specificeren -argbestand filet.

-buitenbeentje uitvoer.pot
Zet outputklassen in het zip-bestand output.jar.

-outxml Genereer een aop.xml bestand voor laadtijd weven met standaard naam.

-outxmlbestand aangepast/aop.xml
Genereer een aop.xml-bestand voor weven tijdens het laden met een aangepaste naam.

-toenemend
Voer de compiler continu uit. Na de eerste compilatie zal de compiler
wacht met hercompileren totdat het een nieuwe regel leest van de standaardinvoer, en zal
stop als er een 'q' staat. Het zal alleen noodzakelijke componenten opnieuw compileren, dus a
hercompileren zou veel sneller moeten zijn dan een tweede compileren. Dit vereist
-bronwortels.

-bronwortels DirPaths
Zoek en bouw alle .java- of .aj-bronbestanden in elke map die wordt vermeld in
DirPaths. DirPaths is, net als classpath, een enkel argument dat een lijst bevat van
paden naar mappen, begrensd door het platformspecifieke scheidingsteken voor klassenpaden.
Vereist door -incrementeel.

-kruisverwijzingen
Genereer een build .ajsym-bestand in de uitvoermap. Gebruikt om te bekijken
transversale verwijzingen door tools zoals de AspectJ Browser.

-emacssym Genereer .ajesym-symboolbestanden voor emacs-ondersteuning (verouderd).

-Xlint Hetzelfde als -Xlint:waarschuwing (standaard ingeschakeld)

-Xlint:{niveau}
Standaardniveau instellen voor berichten over mogelijke programmeerfouten in
transversale code. {level} kan negeren, waarschuwen of fout zijn. Dit overschrijft
vermeldingen in org/aspectj/weaver/XlintDefault.properties van aspectjtools.jar, maar
overschrijft de niveaus die zijn ingesteld met de optie -Xlintfile niet.

-Xlintbestand EigenschapBestand
Specificeer het eigenschappenbestand om niveaus in te stellen voor specifieke transversale berichten.
PropertyFile is een pad naar een Java .properties-bestand dat dezelfde eigenschap heeft
namen en waarden als org/aspectj/weaver/XlintDefault.properties van
aspectjtools.jar, die het ook overschrijft.

-help Informatie over compileropties en gebruik verzenden

-version Verzend de versie van de AspectJ-compiler

-klassenpad Pad
Geef op waar u gebruikersklassebestanden kunt vinden. Pad is een enkel argument dat a . bevat
lijst met paden naar zip-bestanden of mappen, begrensd door de platformspecifieke
pad begrenzer.

-bootklassepad Pad
Overschrijf de locatie van het bootclasspath van de VM voor het evalueren van typen wanneer:
compileren. Pad is een enkel argument dat een lijst met paden naar zip-bestanden bevat of
mappen, begrensd door het platformspecifieke padscheidingsteken.

-extdir Pad
Overschrijf de locatie van de extensiemappen van de VM voor het evalueren van typen
bij het compileren. Pad is een enkel argument dat een lijst met paden bevat naar
mappen, begrensd door het platformspecifieke padscheidingsteken.

-d Directory
Geef op waar de gegenereerde .class-bestanden moeten worden geplaatst. Indien niet gespecificeerd, Directory
standaard ingesteld op de huidige werkmap.

-doelwit [1.1 naar 1.5]
Specificeer de doelinstelling van het klassebestand (1.1 tot 1.5, standaard is 1.2)

-1.3 Stel nalevingsniveau in op 1.3 Dit impliceert -bron 1.3 en -doel 1.1.

-1.4 Stel nalevingsniveau in op 1.4 (standaard) Dit impliceert -bron 1.4 en -doel 1.2.

-1.5 Stel nalevingsniveau in op 1.5. Dit impliceert -source 1.5 en -target 1.5.

-source [1.3|1.4|1.5]
Schakel beweringen in (1.3, 1.4 of 1.5 - standaard is 1.4). Bij gebruik van -source 1.3,
een assert()-instructie die geldig is onder Java 1.4 zal resulteren in een compilerfout.
Bij gebruik van -source 1.4, behandel beweren als een trefwoord en implementeer beweringen
volgens de 1.4 taalspecificatie. Bij gebruik van -source 1.5, Java 5-taal
kenmerken zijn toegestaan.

-nowarn Zend geen waarschuwingen uit (gelijk aan '-warn:none') Dit onderdrukt geen berichten
gegenereerd door verklaren waarschuwing or Xlint.

-waarschuwen: artikelen
Stuur waarschuwingen voor alle gevallen van de door komma's gescheiden lijst met twijfelachtige code
(bijv. '-warn:unusedLocals,deprecation'):

constructorName-methode met constructornaam
packageDefaultMethod poging om pakket-standaard methode te overschrijven
gebruik van verouderd type of lid
maskedCatchBlocks verborgen vangstblok
ongebruiktLocals lokale variabele nooit gelezen
Ongebruikt Argumenten methode argument nooit gelezen
ongebruiktImports importinstructie niet gebruikt door code in bestand
geen onderdrukt alle compilerwaarschuwingen

-waarschuwing: geen onderdrukt geen berichten die zijn gegenereerd door verklaren waarschuwing or Xlint.

-beëindiging
Hetzelfde als -warn:deprecation

-noImportError
Geen fouten verzenden voor onopgeloste invoer

-ProceedOnError
Blijf compileren na een fout, klassebestanden dumpen met probleemmethoden

-g:[lijnen,vars,bron]
debug-attributenniveau, dat drie vormen kan aannemen:

-g alle foutopsporingsinfo ('-g:lines,vars,source')
-g:geen geen foutopsporingsinfo
-g:{items} debug-info voor alle/alle [regels, vars, bron], bijv.
-g:lijnen,bron

-behoudAlleLocals
Bewaar alle lokale variabelen tijdens het genereren van code (om foutopsporing te vergemakkelijken).

-referentieInfo
Referentie-informatie berekenen.

-codering formaat
Specificeer de standaard broncoderingsindeling. Specificeer aangepaste codering op een bestand per bestand
basis door het achtervoegsel van elk invoerbronbestand/mapnaam met '[encoding]'.

-uitgebreide Berichten verzenden over benaderde/verwerkte compilatie-eenheden

-showWeaveInfo
Berichten over weven verzenden

-logboek filet Geef een logbestand op voor compilerberichten.

-progress Toon voortgang (vereist -log-modus).

-tijd Toon snelheidsinformatie.

-noExit Roep System.exit(n) niet aan aan het einde van de compilatie (n=0 als er geen fout is)

-herhalen N Herhaal het compilatieproces N keer (meestal om prestatieanalyse uit te voeren).

-XterminateNaCompilatie
Zorgt ervoor dat de compiler wordt beëindigd vóór het weven

-XaddSerialVersionUID
Zorgt ervoor dat de compiler het veld SerialVersionUID berekent en toevoegt aan elk type
het implementeren van serializable die wordt beïnvloed door een aspect. Het veld is
berekend op basis van de klasse voordat het weven heeft plaatsgevonden.

-Xreweavable[:comprimeren]
(Experimenteel - verouderd als nu standaard) Voert weaver uit in herweavbare modus die:
zorgt ervoor dat het geweven klassen creëert die opnieuw kunnen worden geweven, afhankelijk van de
beperking dat bij een poging tot herweven alle typen die het geweven adviseerden
soort moet toegankelijk zijn.

-XnoInline
(Experimenteel) niet inline rond advies

-XincrementeelBestand filet
(Experimenteel) Dit werkt als incrementele modus, maar gebruikt een bestand in plaats van
standaardinvoer om de compiler te besturen. Het zal elke keer dat het bestand wordt gecompileerd, opnieuw worden gecompileerd
gewijzigd en en stop wanneer het bestand wordt verwijderd.

-Xserialiseerbare aspecten
(Experimenteel) Normaal gesproken is het een fout om aspecten serialiseerbaar te verklaren. Dit
optie verwijdert die beperking.

-XnietReweavable
(Experimenteel) Maak klassenbestanden die vervolgens niet opnieuw kunnen worden geweven door AspectJ.

-Jruntimelevel:1.2, ajruntimelevel:1.5
(Experimenteel) Hiermee kan code worden gegenereerd die gericht is op een 1.2- of een 1.5-niveau
AspectJ-runtime (standaard 1.5)

Dien in namen
ajc accepteert bronbestanden met ofwel de .Java extensie of de .aj verlenging. We
normaal gebruik .Java voor al onze bestanden in een AspectJ-systeem -- bestanden die aspecten bevatten
evenals bestanden die klassen bevatten. Als u echter mechanisch moet
onderscheid maken tussen bestanden die de extra functionaliteit van AspectJ gebruiken en bestanden die puur zijn
Java raden we aan om de .aj extensie voor die bestanden.

We willen andere manieren van mechanisch onderscheid, zoals naamgevingsconventies, ontmoedigen
of subpakketten ten gunste van de .aj verlenging.

· Bestandsnaamconventies zijn moeilijk af te dwingen en leiden tot ongemakkelijke namen voor uw aspecten.
In plaats van TracingAspect.java we raden aan om traceren.aj (of gewoon Traceren.java)
gebruiken.

· Subpakketten halen aspecten uit hun natuurlijke plaats in een systeem en kunnen een
kunstmatige behoefte aan bevoorrechte aspecten. In plaats van een subpakket toe te voegen, zoals
aspecten we raden aan om de .aj extensie en deze bestanden in uw
bestaande pakketten in plaats daarvan.

Compatibiliteit
AspectJ is een compatibele uitbreiding van de programmeertaal Java. De AspectJ-compiler
houdt zich aan de De Java Taal specificatie, Tweede editie (BOOK)
http://java.sun.com/docs/books/jls/index.html en naar de De Java Virtueel Machine
Specificatie, Tweede editie (BOOK) http://java.sun.com/docs/books/vmspec/index.html en
draait op elk Java 2-compatibel platform. De code die het genereert, draait op elke Java 1.1 of
later compatibel platform. Voor meer informatie over compatibiliteit met Java en met
eerdere releases van AspectJ, zie "" >.

Voorbeelden
A simpel voorbeeld

Compileer twee bestanden:

ajc HelloWorld.java Trace.java

An voorbeeld gebruik -argbestand/@

Om te voorkomen dat u bestandsnamen op de opdrachtregel specificeert, vermeldt u bronbestanden in een door regels gescheiden
tekst argbestand. Bronbestandspaden kunnen absoluut of relatief zijn ten opzichte van het argbestand, en kunnen
voeg andere argfiles toe door @-reference. Het volgende bestand: bronnen.lst bevat
absolute en relatieve bestanden en @-referenties:

Gui.java
/home/gebruiker/src/Library.java
data/Repository.java
data/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
view/body/ArrayView.java

Compileer de bestanden met behulp van het -argfile- of @-formulier:

ajc -argfile bronnen.lst
ajc @bronnen.lst

Argfiles worden ook ondersteund door jikes en javac, dus je kunt de bestanden gebruiken in hybride builds.
De ondersteuning varieert echter:

· Alleen ajc accepteert opdrachtregelopties

· Jikes en Javac accepteren geen interne @argfile-referenties.

· Jikes en Javac accepteren alleen het @file-formulier op de opdrachtregel.

An voorbeeld gebruik -inpad en -aspectpad

Bytecode weven met -inpath: AspectJ 1.2 ondersteunt het weven van .class-bestanden in invoer zip/jar
bestanden en mappen. Het gebruik van invoerpotten is als het compileren van de bijbehorende bronbestanden,
en alle binaire bestanden worden naar de uitvoer gestuurd. Hoewel Java-compatibele compilers kunnen verschillen in:
hun uitvoer, ajc zou als invoer alle klassenbestanden moeten nemen die zijn geproduceerd door javac, jikes, eclipse,
en natuurlijk ajc. Aspecten die zijn opgenomen in -inpath zullen worden verweven zoals andere .class
bestanden, en ze zullen zoals gewoonlijk andere typen beïnvloeden.

Aspectbibliotheken die -aspectpath gebruiken: AspectJ 1.1 ondersteunt weven van alleen-lezen bibliotheken
aspecten bevatten. Net als invoerpotten hebben ze invloed op alle invoer; in tegenstelling tot invoerpotten, ze
zelf worden niet beïnvloed of als output uitgezonden. Bronnen samengesteld met aspectbibliotheken
moeten worden uitgevoerd met dezelfde aspectbibliotheken op hun klassenpad.

Het volgende voorbeeld bouwt het traceringsvoorbeeld op in een opdrachtregelomgeving; het creëert
een alleen-lezen aspectbibliotheek, compileert enkele klassen voor gebruik als invoerbytecode, en compileert
de klassen en andere bronnen met de aspectbibliotheek.

Het traceervoorbeeld staat in de AspectJ-distributie ({aspectj}/doc/examples/tracing). Dit
gebruikt de volgende bestanden:

aspectj1.1/
bak /
AJC
lib /
aspectjrt.jar
voorbeelden/
traceren/
Cirkel.java
VoorbeeldMain.java
lib /
AbstractTrace.java
TraceMyClasses.java
notrace.lst
Plein.java
tracelib.lst
tracev3.lst
TwoDShape.java
versie3/
Traceren.java
TraceMyClasses.java

Hieronder wordt het padscheidingsteken genomen als ";", maar bestandsscheidingstekens zijn "/". Alle commando's zijn:
op één lijn. Pas zo nodig paden en opdrachten aan uw omgeving aan.

Stel het pad, het klassenpad en de huidige map in:

cd-voorbeelden
exporteer ajrt=../lib/aspectjrt.jar
export CLASSPATH="$ajrt"
export PATH="../ bin:$PAD"

Bouw een alleen-lezen traceringsbibliotheek:

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

Bouw de applicatie met tracering in één stap:

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

Voer de applicatie uit met tracering:

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" traceren.ExampleMain

Bouw de applicatie met tracering van binaire bestanden in twee stappen:

· (a) Bouw de applicatieklassen (gebruik javac ter demonstratie):

mkdir lessen
javac -d klassen traceren/*.java
jar cfM app.jar -C klassen .

· (b) Bouw de applicatie met tracering:

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

Voer de applicatie uit met tracering (hetzelfde als hierboven):

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" traceren.ExampleMain

Voer de applicatie uit zonder tracering:

java -classpath "app.jar" tracering.VoorbeeldHoofd

De AspectJ compiler API
De AspectJ-compiler is volledig in Java geïmplementeerd en kan worden aangeroepen als een Java-klasse.
De enige interface die als openbaar moet worden beschouwd, zijn de openbare methoden in
org.aspectj.tools.ajc.Main. bijv., hoofd(String[] argumenten) neemt de standaard AJC commando
lijn argumenten. Dit betekent dat een alternatieve manier om de compiler uit te voeren is:

Java org.aspectj.tools.ajc.Main [keuze...] [bestand ...]

Gebruik de methoden om programmatisch toegang te krijgen tot compilerberichten setHolder(IMessageHolder)
houder) en / of uitvoeren(String[] argumenten, IBerichthouder houder). AJC rapporteert elk bericht aan de
houder met behulp van IMessageHolder.handleMessage(..). Als je alleen de berichten wilt verzamelen,
. BerichtHandler als jouw IBerichthouder. Compileer en voer bijvoorbeeld de
in aansluiting op aspectjtools.jar op het klassenpad:

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

openbare klasse WrapAjc {
public static void main (String [] args) {
Hoofdcompiler = nieuwe Main();
MessageHandler m = nieuwe MessageHandler();
compiler.run(args, m);
IMessage [] ms = m.getMessages (null, true);
System.out.println("berichten: " + Arrays.asLijst(Mevrouw));
}
}

Opstapelen sporen en de Bron bestand attribuut
In tegenstelling tot traditionele Java-compilers, kan de AspectJ-compiler in bepaalde gevallen:
classfiles van meerdere bronbestanden. Helaas, het originele Java-klasse-bestandsformaat
ondersteunt niet meerdere SourceFile-kenmerken. Om ervoor te zorgen dat alle bronbestanden
informatie beschikbaar is, kan de AspectJ-compiler in sommige gevallen meerdere bestandsnamen coderen
in het SourceFile-attribuut. Wanneer de Java VM stacktraces genereert, gebruikt deze dit:
attribuut om het bronbestand op te geven.

(De AspectJ 1.0-compiler ondersteunt ook de .class bestandsextensies van JSR-45. Deze:
compatibele debuggers (zoals jdb in Java 1.4.1) toestaan ​​om het juiste bestand en de juiste regel te identificeren
zelfs veel bronbestanden voor een enkele klasse gegeven. JSR-45-ondersteuning is gepland voor ajc in
AspectJ 1.1, maar zit niet in de eerste release. Om volledig debugbare .class-bestanden te krijgen, gebruikt u
de optie -XnoInline.)

Waarschijnlijk is de enige keer dat u dit formaat ziet, wanneer u stacktraces bekijkt, waar u
kan sporen van het formaat tegenkomen

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

waar in plaats van de gebruikelijke

Bestand:LineNumber

formaat, zie je

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

In dit geval is LineNumber de gebruikelijke offset in regels plus de "startlijn" van de werkelijke
bron bestand. Dat betekent dat u LineNumber zowel gebruikt om het bronbestand te identificeren als om
de lijn waar het om gaat. Het nummer tussen [haakjes] na elk bestand vertelt u de virtuele "start
regel" voor dat bestand (het eerste bestand begint met 0).

In ons voorbeeld van de nul-aanwijzer uitzondering trace, is de virtuele startregel 1030.
Aangezien het bestand SynchAspect.java "begint" op regel 1000 [1k], wijst het LineNumber naar regel
30 van SynchAspect.java.

Dus, wanneer u wordt geconfronteerd met dergelijke stapelsporen, is de manier om de werkelijke bronlocatie te vinden:
kijk door de lijst met "startlijn"-nummers om degene net onder de getoonde lijn te vinden
nummer. Dat is het bestand waar de bronlocatie daadwerkelijk te vinden is. Trek dan af
die "startregel" van het getoonde regelnummer om het werkelijke regelnummer daarbinnen te vinden
bestand.

In een klassenbestand dat uit slechts één bronbestand komt, genereert de AspectJ-compiler:
SourceFile-kenmerken consistent met traditionele Java-compilers.

AJC(1)

Gebruik ajc online met onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad