GoGPT Best VPN GoSearch

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 tisseur de bytecode pour les langages AspectJ et Java

SYNOPSIS


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

Description


L'exposition ajc La commande compile et tisse les fichiers source et .class AspectJ et Java, produisant
Fichiers .class compatibles avec toute machine virtuelle Java (1.1 ou ultérieure). Il combine compilation et
tissage de bytecode et prise en charge des builds incrémentielles ; vous pouvez également tisser du bytecode au moment de l'exécution
grâce à "" >.

Les arguments après les options spécifient le(s) fichier(s) source à compiler. Pour spécifier la source
classes, utilisation -inpath (ci-dessous). Les fichiers peuvent être listés directement sur la ligne de commande ou dans un
fichier. le -fichierarg filet et @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 passer explicitement ajc toutes les sources nécessaires. Assurez-vous d'inclure la source
non seulement pour les aspects ou les coupes ponctuelles, mais aussi pour tous les types affectés. Spécifier tous
sources est nécessaire car, contrairement à javac, ajc ne recherche pas le chemin source pour
classes. (Pour une discussion sur les types affectés qui pourraient être requis, voir L'exposition Aspect J
Programmation Guider, Mise en œuvre Appendice ../progguide/implementation.html) .

Pour spécifier les sources, vous pouvez lister les fichiers sources comme arguments ou utiliser les options -racinessources
or -inpathS'il existe plusieurs sources pour un 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 dans le chemin d'entrée et reconstruire.)

Options
-dans les bocaux Liste des pots
obsolète : depuis la version 1.2, utilisez -inpath, qui prend également les répertoires.

-inpath Chemin
Accepter comme bytecode source tous les fichiers .class dans le La sortie inclura ceux-ci
classes, éventuellement intégrées à tout aspect applicable. Le chemin est un chemin unique
argument contenant une liste de chemins vers des fichiers ou des répertoires zip, délimités 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 dans toutes les sources.
Les aspects auraient dû être générés par la même version du compilateur.
lors de l'exécution des classes de sortie, le chemin de classe d'exécution doit contenir tous les aspectspath
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 Fichier
Le fichier contient une liste d'arguments délimitée par des lignes. Chaque ligne du fichier
doit contenir une option, un nom de fichier ou une chaîne d'arguments (par exemple, un chemin de classe ou
inpath). Les arguments lus depuis le fichier sont insérés dans la liste d'arguments pour
la commande. Les chemins relatifs dans le fichier sont calculés à partir du répertoire
contenant le fichier (et non le répertoire de travail courant). Les commentaires, comme en Java,
commencer avec // et s'étend jusqu'à la fin de la ligne. Options spécifiées en argument
les fichiers peuvent remplacer plutôt qu'é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. Le formulaire @déposer est la même que
en précisant -fichierarg filet.

-outjar output.jar
Placez 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.

-outxmlfile personnalisé/aop.xml
Générer 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
attendez de recompiler jusqu'à ce qu'il lise une nouvelle ligne à partir de l'entrée standard, et il le fera
quittez-le lorsqu'il lit un « q ». Il ne recompile que les composants nécessaires, donc un
La recompilation devrait être bien plus rapide qu'une seconde compilation. Cela nécessite
-racinessources.

-racinessources Chemins de répertoire
Recherchez et créez tous les fichiers sources .java ou .aj sous n'importe quel répertoire répertorié dans
Chemins de répertoire. Comme les chemins de classe, les chemins de répertoire sont des arguments uniques contenant une liste de
chemins vers des répertoires, délimités par le délimiteur de chemin de classe spécifique à la plate-forme.
Requis par -incremental.

-crossrefs
Générer un fichier de build .ajsym dans le répertoire de sortie. Utilisé pour la visualisation.
références transversales par des outils comme AspectJ Browser.

-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 concernant les erreurs de programmation potentielles dans
Code transversal. {level} peut être ignoré, avertissement ou erreur. Ceci remplace
entrées dans org/aspectj/weaver/XlintDefault.properties depuis aspectjtools.jar, mais
ne remplace pas les niveaux définis à l'aide de l'option -Xlintfile.

-Xlintfile Fichier de propriétés
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 à partir de
aspectjtools.jar, qu'il remplace également.

-aide É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 utilisateur. Le chemin est un argument unique contenant un
liste des chemins d'accès aux fichiers ou répertoires zip, délimités par les spécificités de la plateforme
délimiteur de chemin.

-chemin de classe de démarrage Chemin
Remplacer l'emplacement du bootclasspath de la machine virtuelle à des fins d'évaluation des types lorsque
compilation. Path est un argument unique contenant une liste de chemins vers des 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 machine virtuelle à 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 l'emplacement des fichiers .class générés. Si ce n'est pas spécifié, Annuaire
par défaut, le répertoire de travail actuel.

-cible [1.1 à 1.5]
Spécifier 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é sur 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 Définissez le niveau de conformité sur 1.5. Cela implique -source 1.5 et -target 1.5.

-source [1.3|1.4|1.5]
Activer/désactiver les assertions (1.3, 1.4 ou 1.5 – la valeur par défaut est 1.4). Avec -source 1.3,
une instruction assert() valide sous Java 1.4 entraînera une erreur du compilateur.
Lors de l'utilisation de -source 1.4, traitez affirmer comme mot-clé et implémenter des assertions
conformément aux spécifications du langage 1.4. Lors de l'utilisation de -source 1.5, le 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 codes douteux
(par exemple '-warn:unusedLocals,deprecation') :

méthode constructorName avec le nom du constructeur
packageDefaultMethod tente de remplacer la méthode package-default
utilisation déconseillée d'un type ou d'un membre déconseillé
bloc de capture caché maskedCatchBlocks
variable locale unusedLocals jamais lue
argument de 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

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

-désapprobation
Identique à -warn:deprecation

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

-procédéSurErreur
Continuer la compilation après une erreur, en vidant les fichiers de classe avec les méthodes problématiques

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

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

-preserveAllLocals
Conserver toutes les variables locales lors de la génération du 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 un encodage personnalisé pour chaque fichier.
en ajoutant à chaque nom de fichier/dossier source d'entrée le suffixe « [encoding] ».

-verbose Émet des messages sur les unités de compilation consultées/traitées

-showWeaveInfo
Émettre des messages sur le tissage

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

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

-time Affiche les informations de vitesse.

-noExit Ne pas appeler System.exit(n) à la fin de la compilation (n=0 si aucune 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
Force le compilateur à calculer et à ajouter le champ SerialVersionUID à n'importe quel type
implémentant Serializable qui est affecté par un aspect. Le champ est
calculé en fonction de la classe avant que le tissage ait eu lieu.

-Xreweavable[:compress]
(Expérimental - obsolète car désormais par défaut) Exécute Weaver en mode reweavable qui
l'amène à créer des classes tissées qui peuvent être retissées, sous réserve de
restriction selon laquelle, lors d'une tentative de retissage, tous les types qui ont conseillé le tissage
le type doit être accessible.

-XnoInline
(Expérimental) ne pas intégrer les conseils

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

-XserializableAspects
(Expérimental) Normalement, déclarer des aspects sérialisables est une erreur. Ceci
L'option supprime cette restriction.

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

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

Fichier noms
ajc accepte les fichiers sources avec soit le .Java extension ou la .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 contenant des classes. Cependant, si vous avez besoin de les gérer mécaniquement,
distinguer les fichiers qui utilisent les fonctionnalités supplémentaires d'AspectJ de ceux qui sont purement
Java, nous 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 dénomination
ou des sous-paquets en faveur de la .un J extension.

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

· Les sous-packages déplacent les aspects hors de leur emplacement naturel 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
les packages existants à la place.

Compatibilité
AspectJ est une extension compatible du langage de programmation Java. Le compilateur AspectJ
adhère à la L'exposition Java langues Spécification, Seconde Édition (LIVRE)
http://java.sun.com/docs/books/jls/index.html et à la L'exposition Java Salle de conférence virtuelle Machine
Spécification, Seconde Édition (LIVRE) http://java.sun.com/docs/books/vmspec/index.html et
fonctionne sur toute plateforme compatible Java 2. Le code qu'il génère fonctionne sur toute plateforme Java 1.1 ou
plateformes compatibles ultérieures. Pour plus d'informations sur la compatibilité avec Java et
versions précédentes d'AspectJ, voir "" >.

Exemples
A simple (ici)

Compiler deux fichiers :

ajc HelloWorld.java Trace.java

An (ici) grâce à -argfile/@

Pour éviter de spécifier des noms de fichiers sur la ligne de commande, répertoriez les fichiers sources dans une ligne délimitée.
Fichier d'arguments texte. Les chemins d'accès aux fichiers sources peuvent être absolus ou relatifs au fichier d'arguments, et peuvent
Inclure d'autres fichiers d'arguments par référence @. Le fichier suivant sources.lst contient
fichiers absolus et relatifs et références @ :

Gui.java
/home/user/src/Library.java
données/Repository.java
données/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
vue/corps/ArrayView.java

Compilez les fichiers en utilisant soit la forme -argfile soit la forme @ :

ajc -argfile sources.lst
ajc @sources.lst

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

· Seul ajc accepte les options de ligne de commande

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

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

An (ici) grâce à -inpath et -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 fichiers JAR d'entrée revient à compiler les fichiers sources correspondants,
et tous les binaires sont émis vers la sortie. Bien que les compilateurs compatibles Java puissent différer
leur sortie, ajc devrait prendre comme entrée tous les fichiers de classe produits par javac, jikes, eclipse,
et, bien sûr, ajc. Les aspects inclus dans -inpath seront intégrés à d'autres classes.
fichiers, et ils affecteront les 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 fichiers d'entrée, ils affectent toutes les entrées ; contrairement aux fichiers d'entrée, ils
eux-mêmes ne sont pas affectés ni émis en sortie. Sources compilées avec les bibliothèques d'aspects
doit être exécuté avec les mêmes bibliothèques d'aspect sur leur chemin de classe.

L'exemple suivant crée l'exemple de traçage dans un environnement de ligne de commande ; il 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).
utilise les fichiers suivants :

aspectj1.1/
poubelle/
ajc
lib /
aspectjrt.jar
exemples/
tracé/
Cercle.java
ExampleMain.java
lib /
RésuméTrace.java
TraceMyClasses.java
notrace.lst
Square.java
tracelib.lst
tracev3.lst
TwoDShape.java
version3/
Trace.java
TraceMyClasses.java

Ci-dessous, le séparateur de chemin est « ; », mais les séparateurs de fichiers sont « / ». Toutes les commandes sont
sur une seule ligne. Adaptez 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
exporter CLASSPATH="$ajrt"
export PATH="../ bin:$CHEMIN"

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

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

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

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

Exécutez l'application avec le traçage :

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

Créez 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 tracing/*.java
jar cfM app.jar -C classes .

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

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

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

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

Exécutez l'application sans trace :

java -classpath "app.jar" tracing.ExampleMain

L'exposition Aspect J compilateur API
Le compilateur AspectJ est entièrement implémenté en Java et peut être appelé comme une 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) et/ou exécuter(Chaîne[] arguments, IMessageHolder titulaire). ajc signale chaque message au
titulaire utilisant IMessageHolder.handleMessage(..). Si vous souhaitez simplement collecter les messages,
utilisé Gestionnaire de messages comme votre IMessageHolder. 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 = nouveau Main();
Gestionnaire de messages m = nouveau Gestionnaire de messages();
compilateur.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("messages : " + Tableaux.asList(MS));
}
}

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

(Le compilateur AspectJ 1.0 prend également en charge les extensions de fichier .class de JSR-45. Celles-ci
autoriser les débogueurs compatibles (tels que jdb dans Java 1.4.1) à identifier le bon fichier et la bonne ligne
même avec de nombreux fichiers sources pour une même classe. La prise en charge de JSR-45 est prévue pour ajc dans
AspectJ 1.1, mais n'est pas inclus dans la version initiale. Pour obtenir des fichiers .class entièrement débogables, utilisez
l'option -XnoInline.)

La seule fois où vous verrez probablement ce format, c'est lorsque vous affichez les traces de 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, tu vois

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

Dans ce cas, LineNumber est le décalage habituel en lignes plus la « ligne de départ » de la ligne réelle.
fichier source. Cela signifie que vous utilisez LineNumber à la fois pour identifier le fichier source et pour le trouver.
la ligne en question. Le numéro entre crochets après chaque fichier indique la ligne de départ virtuelle.
ligne" pour ce fichier (le premier fichier a un début de 0).

Dans notre exemple de trace d’exception de pointeur nul, la ligne de départ virtuelle est 1030.
Étant donné que le fichier SynchAspect.java « commence » à la ligne 1000 [1 k], le LineNumber pointe vers la ligne
30 de SynchAspect.java.

Ainsi, face à de telles traces de pile, la façon de trouver l'emplacement réel de la source est de
parcourez la liste des numéros de « ligne de départ » pour trouver celui juste en dessous de la ligne affichée
numéro. Il s'agit du fichier où se trouve l'emplacement source. Ensuite, soustrayez
cette « ligne de départ » à partir du numéro de ligne affiché pour trouver le numéro de ligne réel dans celui-ci
fichier.

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

ajc(1)

Utiliser AJC en ligne avec les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad




×
Publicité
❤ ️Achetez, réservez ou achetez ici — gratuitement, contribue à maintenir la gratuité des services.