AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

ajc - En ligne dans le Cloud

Exécutez ajc dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande ajc qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


ajc — compilateur et tisserand de bytecode pour les langages AspectJ et Java

SYNOPSIS


ajc [Options] [fichier... | @fichier... | -fichierarg fichier... ]

Description


La ajc La commande compile et tisse les fichiers source et .class AspectJ et Java, produisant
Fichiers .class compatibles avec n'importe quelle machine virtuelle Java (1.1 ou version ultérieure). Il combine compilation et
tissage de bytecode et prend en charge les versions incrémentielles ; vous pouvez également tisser du bytecode au moment de l'exécution
en utilisant "" >.

Les arguments après les options spécifient le(s) fichier(s) source à compiler. Pour spécifier la source
cours, utiliser -dans le chemin (au dessous de). Les fichiers peuvent être listés directement sur la ligne de commande ou dans un
fichier. le -fichierarg filet ainsi que @filet les formes sont équivalentes et sont interprétées comme signifiant
tous les arguments répertoriés dans le fichier spécifié.

Remarque: Vous devez explicitement passer ajc toutes les sources nécessaires. Assurez-vous d'inclure la source
non seulement pour les aspects ou les points de coupe, mais aussi pour tous les types affectés. Tout spécifier
sources est nécessaire car, contrairement à javac, ajc ne recherche pas le chemin source pour
Des classes. (Pour une discussion sur les types affectés qui pourraient être requis, voir La Aspect J
Programmation Guider, Implémentation Appendice ../progguide/implementation.html) .

Pour spécifier les sources, vous pouvez lister les fichiers source comme arguments ou utiliser les options -racinessource
or -dans le chemin. S'il y a plusieurs sources pour n'importe quel type, le résultat est indéfini car ajc
n'a aucun moyen de déterminer quelle source est correcte. (Cela se produit le plus souvent lorsque les utilisateurs
inclure le répertoire de destination sur l'inpath et reconstruire.)

Options
-injars Liste de pots
obsolète : depuis la 1.2, utilisez -inpath, qui prend également les répertoires.

-dans le chemin Chemin
Acceptez comme bytecode source tous les fichiers .class dans le La sortie inclura ces
classes, éventuellement comme tissé avec tous les aspects applicables. Le chemin est un seul
argument contenant une liste de chemins vers des fichiers zip ou des répertoires, délimité par
le délimiteur de chemin spécifique à la plate-forme.

-aspectpath Chemin
Tissez les aspects binaires des fichiers jar et des répertoires sur le chemin vers toutes les sources.
Les aspects doivent avoir été générés par la même version du compilateur. Lorsque
exécutant les classes de sortie, le chemin d'accès aux classes doit contenir tous les chemins d'aspect
entrées. Path, comme classpath, est un argument unique contenant une liste de chemins
aux fichiers jar, délimités par le délimiteur de chemin de classe spécifique à la plate-forme.

-fichierarg Déposez votre dernière attestation
Le fichier contient une liste d'arguments délimités par des lignes. Chaque ligne du fichier
doit contenir une option, un nom de fichier ou une chaîne d'argument (par exemple, un chemin de classe ou
chemin d'accès). Les arguments lus dans le fichier sont insérés dans la liste des arguments pour
la commande. Les chemins relatifs dans le fichier sont calculés à partir du répertoire
contenant le fichier (pas le répertoire de travail actuel). Commentaires, comme en Java,
commencer avec // et s'étendre jusqu'à la fin de la ligne. Options spécifiées dans l'argument
les fichiers peuvent remplacer plutôt que d'étendre les valeurs d'options existantes, évitez donc
en spécifiant des options telles que -chemin de classe dans les fichiers d'arguments contrairement au
le fichier d'arguments est la seule spécification de construction. La forme @déposer est la même que
en précisant -fichierarg filet.

-outjar sortie.jar
Mettez les classes de sortie dans le fichier zip output.jar.

-outxml Génère un fichier aop.xml pour le tissage au moment du chargement avec le nom par défaut.

-fichieroutxml personnalisé/aop.xml
Générez un fichier aop.xml pour le tissage au moment du chargement avec un nom personnalisé.

-incrémentale
Exécutez le compilateur en continu. Après la compilation initiale, le compilateur
attendre pour recompiler jusqu'à ce qu'il lise une nouvelle ligne à partir de l'entrée standard, et
quitter quand il lit un 'q'. Il ne recompilera que les composants nécessaires, donc un
recompiler devrait être beaucoup plus rapide que de faire une deuxième compilation. Cela nécessite
-sourceroots.

-racinessource CheminsDir
Recherchez et créez tous les fichiers source .java ou .aj dans n'importe quel répertoire répertorié dans
DirPaths. DirPaths, comme classpath, est un argument unique contenant une liste de
chemins d'accès aux répertoires, délimités par le délimiteur de chemin de classe spécifique à la plate-forme.
Obligatoire par -incremental.

-références croisées
Générez un fichier de build .ajsym dans le répertoire de sortie. Utilisé pour la visualisation
références transversales par des outils comme le navigateur AspectJ.

-emacssym Génère des fichiers de symboles .ajesym pour la prise en charge d'emacs (obsolète).

-Xlint Identique à -Xlint:warning (activé par défaut)

-Xlint :{niveau}
Définir le niveau par défaut pour les messages sur les erreurs de programmation potentielles dans
code transversal. {level} peut être ignoré, avertissement ou erreur. Cela remplace
entrées dans org/aspectj/weaver/XlintDefault.properties de aspectjtools.jar, mais
ne remplace pas les niveaux définis à l'aide de l'option -Xlintfile.

-Fichier XLint FichierPropriété
Spécifiez le fichier de propriétés pour définir les niveaux de messages transversaux spécifiques.
PropertyFile est un chemin vers un fichier Java .properties qui prend la même propriété
noms et valeurs comme org/aspectj/weaver/XlintDefault.properties de
aspectjtools.jar, qu'il remplace également.

-help Émettre des informations sur les options et l'utilisation du compilateur

-version Émet la version du compilateur AspectJ

-chemin de classe Chemin
Spécifiez où trouver les fichiers de classe d'utilisateurs. Path est un argument unique contenant un
liste des chemins d'accès aux fichiers zip ou aux répertoires, délimités par la plate-forme spécifique
délimiteur de chemin.

-chemin de classe de démarrage Chemin
Remplacer l'emplacement du chemin de la classe d'amorçage de la VM à des fins d'évaluation des types lorsque
compilation. Path est un argument unique contenant une liste de chemins d'accès aux fichiers zip ou
répertoires, délimités par le délimiteur de chemin spécifique à la plate-forme.

-répertoires externes Chemin
Remplacer l'emplacement des répertoires d'extension de la VM à des fins d'évaluation des types
lors de la compilation. Path est un argument unique contenant une liste de chemins vers
répertoires, délimités par le délimiteur de chemin spécifique à la plate-forme.

-d Annuaire
Spécifiez où placer les fichiers .class générés. Si non spécifié, Annuaire
par défaut le répertoire de travail actuel.

-cible [1.1 à 1.5]
Spécifiez le paramètre cible du fichier de classe (1.1 à 1.5, la valeur par défaut est 1.2)

-1.3 Définir le niveau de conformité à 1.3 Cela implique -source 1.3 et -target 1.1.

-1.4 Définir le niveau de conformité sur 1.4 (par défaut) Cela implique -source 1.4 et -target 1.2.

-1.5 Réglez le niveau de conformité sur 1.5. Cela implique -source 1.5 et -target 1.5.

-source [1.3|1.4|1.5]
Basculer les assertions (1.3, 1.4 ou 1.5 - la valeur par défaut est 1.4). Lors de l'utilisation de -source 1.3,
une instruction assert() valide sous Java 1.4 entraînera une erreur du compilateur.
Lorsque vous utilisez -source 1.4, traitez affirmer comme mot-clé et implémenter des assertions
selon la spécification du langage 1.4. Lors de l'utilisation de -source 1.5, langage Java 5
les fonctionnalités sont autorisées.

-nowarn N'émet aucun avertissement (équivalent à '-warn:none') Cela ne supprime pas les messages
généré par déclarer avertissement or XLint.

-avertir: articles
Émettre des avertissements pour toutes les instances de la liste délimitée par des virgules de code douteux
(par exemple '-warn:unusedLocals,deprecation'):

méthode constructorName avec le nom du constructeur
packageDefaultMethod tente de remplacer la méthode par défaut du package
dépréciation utilisation d'un type ou d'un membre déprécié
maskedCatchBlocks bloc de capture caché
variable locale unusedLocals jamais lue
argument de la méthode unusedArguments jamais lu
Instruction d'importation unusedImports non utilisée par le code dans le fichier
aucun ne supprime tous les avertissements du compilateur

-warn:aucun ne supprime pas les messages générés par déclarer avertissement or XLint.

-désapprobation
Identique à -warn:deprecation

-noImportErreur
N'émettez aucune erreur pour les importations non résolues

-procédéSurErreur
Continuez à compiler après l'erreur, en vidant les fichiers de classe avec des méthodes problématiques

-g:[lignes,vars,source]
niveau des attributs de débogage, qui peut prendre trois formes :

-g toutes les informations de débogage ('-g:lines,vars,source')
-g:aucun aucune information de débogage
-g:{items} informations de débogage pour tout/tout [lignes, vars, source], par exemple,
-g:lignes,source

-preserveAllLocals
Conservez toutes les variables locales lors de la génération de code (pour faciliter le débogage).

-informations de référence
Calculer les informations de référence.

-codage le format
Spécifiez le format d'encodage source par défaut. Spécifiez l'encodage personnalisé sur un fichier par fichier
base en suffixant chaque nom de fichier/dossier source d'entrée avec '[encoding]'.

-verbose Émettre des messages sur les unités de compilation accédées/traitées

-showWeaveInfo
Émettre des messages sur le tissage

-Journal filet Spécifiez un fichier journal pour les messages du compilateur.

-progress Affiche la progression (nécessite le mode -log).

-time Affichage des informations de vitesse.

-noExit Ne pas appeler System.exit(n) à la fin de la compilation (n=0 si pas d'erreur)

-répéter N Répétez le processus de compilation N fois (généralement pour effectuer une analyse des performances).

-XterminateAfterCompilation
Provoque l'arrêt du compilateur avant le tissage

-XaddSerialVersionUID
Le compilateur calcule et ajoute le champ SerialVersionUID à n'importe quel type
implémenter Serializable qui est affecté par un aspect. Le terrain est
calculé sur la base de la classe avant le tissage.

-Xrewevable[:compress]
(Expérimental - déprécié comme maintenant par défaut) Exécute le tisserand en mode retisable qui
l'amène à créer des classes tissées qui peuvent être retissées, sous réserve de la
restriction que sur la tentative d'un retissage tous les types qui ont conseillé le tissé
le type doit être accessible.

-XnoInline
(expérimental) ne pas s'aligner sur les conseils

-XincrementalFichier filet
(Expérimental) Cela fonctionne comme le mode incrémentiel, mais en utilisant un fichier plutôt que
entrée standard pour contrôler le compilateur. Il sera recompilé à chaque fois que le fichier est
modifié et et s'arrêter lorsque le fichier est supprimé.

-XsérialisableAspects
(Expérimental) Normalement, c'est une erreur de déclarer des aspects Serializable. Cette
L'option supprime cette restriction.

-XnotReweavable
(Expérimental) Créez des fichiers de classe qui ne peuvent pas être retissés par la suite par AspectJ.

-Xajruntimelevel : 1.2, ajruntimelevel : 1.5
(Expérimental) Permet de générer du code qui cible un niveau 1.2 ou 1.5
Exécution d'AspectJ (par défaut 1.5)

Déposez votre dernière attestation noms
ajc accepte les fichiers source avec soit le .Java extension ou .un J extension. Nous
utiliser normalement .Java pour tous nos fichiers dans un système AspectJ -- fichiers qui contiennent des aspects
ainsi que les fichiers qui contiennent des classes. Cependant, si vous avez besoin de
distinguer les fichiers qui utilisent les fonctionnalités supplémentaires d'AspectJ de ceux qui sont purs
Java, nous vous recommandons d'utiliser le .un J extension pour ces fichiers.

Nous aimerions décourager d'autres moyens de distinction mécanique tels que les conventions de nommage
ou des sous-ensembles au profit de la .un J extension.

· Les conventions de nom de fichier sont difficiles à appliquer et conduisent à des noms maladroits pour vos aspects.
Au lieu de TracingAspect.java nous recommandons d'utiliser Traçage.aj (ou juste Traçage.java)
à la place.

· Les sous-ensembles déplacent les aspects hors de leur place naturelle dans un système et peuvent créer un
besoin artificiel d'aspects privilégiés. Au lieu d'ajouter un sous-package comme
aspects nous vous recommandons d'utiliser le .un J extension et en incluant ces fichiers dans votre
packages existants à la place.

Compatibilité
AspectJ est une extension compatible du langage de programmation Java. Le compilateur AspectJ
adhère à la La Java Langue Spécification, Deuxièmement Édition (LIVRE)
http://java.sun.com/docs/books/jls/index.html et à la La Java Salle de conférence virtuelle Machine
Spécification, Deuxièmement Édition (LIVRE) http://java.sun.com/docs/books/vmspec/index.html ainsi que
fonctionne sur n'importe quelle plate-forme compatible Java 2. Le code qu'il génère s'exécute sur n'importe quel Java 1.1 ou
plate-forme compatible plus tard. Pour plus d'informations sur la compatibilité avec Java et avec
versions précédentes d'AspectJ, voir "" >.

Exemples
A simple exemple

Compilez deux fichiers :

ajc HelloWorld.java Trace.java

An exemple en utilisant -fichierarg/@

Pour éviter de spécifier des noms de fichiers sur la ligne de commande, répertoriez les fichiers source dans un
texte argfile. Les chemins du fichier source peuvent être absolus ou relatifs au fichier argfile, et peuvent
inclure d'autres argfiles par @-reference. Le fichier suivant sources.lst contient
fichiers absolus et relatifs et @-references :

Gui.java
/home/user/src/Bibliothèque.java
données/Dépôt.java
données/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
vue/corps/ArrayView.java

Compilez les fichiers à l'aide de la forme -argfile ou @ :

ajc -fichier arg sources.lst
ajc @sources.lst

Les fichiers Argfile sont également pris en charge par les jikes et javac, vous pouvez donc utiliser les fichiers dans des versions hybrides.
Cependant, la prise en charge varie :

· Seul ajc accepte les options de ligne de commande

· Jikes et Javac n'acceptent pas les références @argfile internes.

· Jikes et Javac n'acceptent que le formulaire @file sur la ligne de commande.

An exemple en utilisant -dans le chemin ainsi que -aspectpath

Tissage de bytecode à l'aide de -inpath : AspectJ 1.2 prend en charge le tissage de fichiers .class dans le zip/jar d'entrée
fichiers et répertoires. Utiliser des pots d'entrée revient à compiler les fichiers source correspondants,
et tous les binaires sont émis en sortie. Bien que les compilateurs compatibles Java puissent différer en
leur sortie, ajc devrait prendre en entrée tous les fichiers de classe produits par javac, jikes, eclipse,
et, bien sûr, ajc. Les aspects inclus dans -inpath seront tissés comme les autres .class
fichiers, et ils affecteront d'autres types comme d'habitude.

Bibliothèques d'aspects utilisant -aspectpath : AspectJ 1.1 prend en charge le tissage à partir de bibliothèques en lecture seule
contenant des aspects. Comme les pots d'entrée, ils affectent toutes les entrées ; contrairement aux pots d'entrée, ils
eux-mêmes ne sont pas affectés ou émis en sortie. Sources compilées avec les bibliothèques d'aspects
doivent être exécutés avec les mêmes bibliothèques d'aspects sur leur chemin de classe.

L'exemple suivant génère l'exemple de traçage dans un environnement de ligne de commande ; ça crée
une bibliothèque d'aspects en lecture seule, compile certaines classes à utiliser comme bytecode d'entrée et compile
les classes et autres sources avec la bibliothèque d'aspects.

L'exemple de traçage se trouve dans la distribution AspectJ ({aspectj}/doc/examples/tracing). Cette
utilise les fichiers suivants :

aspectj1.1/
poubelle/
ajc
lib /
aspectjrt.jar
exemples/
tracé/
Cercle.java
ExempleMain.java
lib /
RésuméTrace.java
TraceMesClasses.java
notrace.lst
Carré.java
tracelib.lst
tracev3.lst
TwoDShape.java
version3/
Trace.java
TraceMesClasses.java

Ci-dessous, le séparateur de chemin est pris comme ";", mais les séparateurs de fichiers sont "/". Toutes les commandes sont
sur une seule ligne. Ajustez les chemins et les commandes à votre environnement selon vos besoins.

Configurez le chemin, le chemin de classe et le répertoire actuel :

exemples de cd
exporter ajrt=../lib/aspectjrt.jar
export CLASSPATH="$ajrt"
export CHEMIN="../ bin:$CHEMIN"

Créez une bibliothèque de traçage en lecture seule :

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

Créez l'application avec le traçage en une seule étape :

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

Exécutez l'application avec traçage :

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

Construisez l'application avec le traçage à partir des binaires en deux étapes :

· (a) Construisez les classes d'application (en utilisant javac à des fins de démonstration) :

classes mkdir
javac -d classes traçage/*.java
jar cfM app.jar -C classes .

· (b) Construisez l'application avec le traçage :

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

Exécutez l'application avec traçage (comme ci-dessus) :

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

Exécutez l'application sans trace :

java -classpath "app.jar" traçage.ExampleMain

La Aspect J compilateur API
Le compilateur AspectJ est entièrement implémenté en Java et peut être appelé en tant que classe Java.
La seule interface qui devrait être considérée comme publique sont les méthodes publiques dans
org.aspectj.tools.ajc.Main. Par exemple, main(Chaîne[] arguments) prend la norme ajc commander
arguments de ligne. Cela signifie qu'une autre façon d'exécuter le compilateur est

Java org.aspectj.tools.ajc.Main [option...] [fichier...]

Pour accéder aux messages du compilateur par programmation, utilisez les méthodes setHolder(IMessageHolder
titulaire) (facultatif) exécuter(chaîne[] arguments, IMessageTitulaire titulaire). ajc rapporte chaque message au
titulaire à l'aide IMessageHolder.handleMessage(..). Si vous voulez juste récupérer les messages,
utilisé Gestionnaire de messages comme votre IMessageTitulaire. Par exemple, compilez et exécutez le
suivre avec aspectjtools.jar sur le chemin de classe :

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

classe publique WrapAjc {
public void main (String [] args) {
Compilateur principal = new Main();
MessageHandler m = nouveau MessageHandler();
compilateur.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("messages: " + Tableaux.asList(Mme));
}
}

Stack Traces ainsi que le Fichier source attribuer
Contrairement aux compilateurs java traditionnels, le compilateur AspectJ peut dans certains cas générer
classfiles à partir de plusieurs fichiers source. Malheureusement, le format de fichier de classe Java d'origine
ne prend pas en charge plusieurs attributs SourceFile. Afin de s'assurer que tous les fichiers source
informations sont disponibles, le compilateur AspectJ peut dans certains cas coder plusieurs noms de fichiers
dans l'attribut SourceFile. Lorsque la machine virtuelle Java génère des traces de pile, elle utilise ce
attribut pour spécifier le fichier source.

(Le compilateur AspectJ 1.0 prend également en charge les extensions de fichier .class de JSR-45. Ces
permettre aux débogueurs conformes (tels que jdb dans Java 1.4.1) d'identifier le bon fichier et la bonne ligne
même donné de nombreux fichiers sources pour une seule classe. Le support JSR-45 est prévu pour ajc en
AspectJ 1.1, mais n'est pas dans la version initiale. Pour obtenir des fichiers .class entièrement déboguables, utilisez
l'option -XnoInline.)

La seule fois où vous pouvez voir ce format, c'est probablement lorsque vous affichez les traces de la pile, où vous
peut rencontrer des traces du format

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

où au lieu de l'habituel

Fichier : Numéro de ligne

format, vous voyez

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

Dans ce cas, LineNumber est le décalage habituel en lignes plus la "ligne de départ" du réel
fichier source. Cela signifie que vous utilisez LineNumber à la fois pour identifier le fichier source et pour trouver
la ligne en cause. Le nombre entre [crochets] après chaque fichier vous indique le "start" virtuel
line" pour ce fichier (le premier fichier a un début de 0).

Dans notre exemple de la trace d'exception du pointeur nul, la ligne de départ virtuelle est 1030.
Puisque le fichier SynchAspect.java "commence" à la ligne 1000 [1k], le LineNumber pointe vers la ligne
30 de SynchAspect.java.

Ainsi, face à de telles traces de pile, le moyen de trouver l'emplacement réel de la source est de
parcourez la liste des numéros de la "ligne de départ" pour trouver celui juste en dessous de la ligne affichée
numéro. C'est le fichier où l'emplacement source peut être trouvé. Ensuite, soustrayez
cette "ligne de départ" à partir du numéro de ligne affiché pour trouver le numéro de ligne réel dans cette
fichier.

Dans un fichier de classe qui provient d'un seul fichier source, le compilateur AspectJ génère
Attributs SourceFile compatibles avec les compilateurs Java traditionnels.

ajc(1)

Utiliser ajc en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad