InglésFrancésEspañol

Ad


icono de página de OnWorks

ajc - En línea en la Nube

Ejecute ajc en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, el emulador en línea de Windows o el emulador en línea de MAC OS

Este es el comando ajc que se puede ejecutar en el proveedor de alojamiento gratuito OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, el emulador en línea de Windows o el emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


ajc — compilador y tejedor de código de bytes para los lenguajes AspectJ y Java

SINOPSIS


ajc [Opciones] [archivo... | @archivo... | -archivoarg archivo... ]

Descripción


El ajc El comando compila y entreteje los archivos fuente y .class de AspectJ y Java, produciendo
Archivos .class compatibles con cualquier Java VM (1.1 o posterior). Combina compilación y
tejido de bytecode y admite compilaciones incrementales; también puede tejer bytecode en tiempo de ejecución
usando "" >.

Los argumentos después de las opciones especifican los archivos de origen para compilar. Para especificar la fuente
clases, uso -entrada (debajo). Los archivos se pueden enumerar directamente en la línea de comando o en un
archivo. los -archivoarg presentar y @presentar Las formas son equivalentes y se interpretan como significado.
todos los argumentos enumerados en el archivo especificado.

Nota: Debe pasar explícitamente ajc todas las fuentes necesarias. Asegúrese de incluir la fuente
no solo para los aspectos o puntos de corte, sino también para cualquier tipo afectado. Especificando todo
source es necesario porque, a diferencia de javac, ajc no busca en sourcepath
clases (Para una discusión de qué tipos afectados podrían ser necesarios, consulte El AspectoJ
Programación Guía, Implementación Apéndice ../progguide/implementación.html) .

Para especificar fuentes, puede listar archivos fuente como argumentos o usar las opciones -raíces de origen
or -entrada. Si hay múltiples fuentes para cualquier tipo, el resultado es indefinido ya que ajc
no tiene manera de determinar qué fuente es correcta. (Esto sucede con mayor frecuencia cuando los usuarios
incluir el directorio de destino en la ruta de entrada y reconstruir).

Opciones
-injares Lista de tarros
en desuso: desde 1.2, use -inpath, que también toma directorios.

-entrada Path
Acepte como código de bytes de origen cualquier archivo .class en el La salida incluirá estos
clases, posiblemente entrelazadas con cualquier aspecto aplicable. El camino es un solo
argumento que contiene una lista de rutas a archivos zip o directorios, delimitada por
el delimitador de ruta específico de la plataforma.

-ruta de aspecto Path
Teje aspectos binarios de archivos y directorios jar en la ruta a todas las fuentes.
Los aspectos deberían haber sido generados por la misma versión del compilador. Cuándo
ejecutando las clases de salida, la ruta de clases de ejecución debe contener todas las rutas de aspecto
entradas. Path, como classpath, es un solo argumento que contiene una lista de rutas
a archivos jar, delimitados por el delimitador classpath específico de la plataforma.

-archivoarg Archive
El archivo contiene una lista de argumentos delimitada por líneas. Cada línea en el archivo
debe contener una opción, un nombre de archivo o una cadena de argumentos (por ejemplo, un classpath o
camino de entrada). Los argumentos leídos del archivo se insertan en la lista de argumentos para
El comando. Las rutas relativas en el archivo se calculan a partir del directorio
que contiene el archivo (no el directorio de trabajo actual). Comentarios, como en Java,
Empezar con // y extender hasta el final de la línea. Opciones especificadas en el argumento
los archivos pueden anular en lugar de extender los valores de opciones existentes, así que evite
especificando opciones como -ruta de clases en archivos de argumentos a diferencia del
El archivo de argumentos es la única especificación de compilación. La forma @expediente es el mismo que
especificando -archivoarg presentar.

-outjar salida.jar
Coloque las clases de salida en el archivo zip output.jar.

-outxml Genera un archivo aop.xml para tejer en tiempo de carga con el nombre predeterminado.

-archivooutxml personalizado/aop.xml
Genere un archivo aop.xml para tejer en tiempo de carga con un nombre personalizado.

-incremental
Ejecute el compilador continuamente. Después de la compilación inicial, el compilador
espere para volver a compilar hasta que lea una nueva línea de la entrada estándar, y
dejar de fumar cuando se lee una 'q'. Solo recompilará los componentes necesarios, por lo que un
volver a compilar debería ser mucho más rápido que hacer una segunda compilación. Esto requiere
-raíces de origen.

-raíces de origen Rutas Dir
Encuentre y cree todos los archivos fuente .java o .aj en cualquier directorio enumerado en
DirPaths. DirPaths, como classpath, es un solo argumento que contiene una lista de
rutas a directorios, delimitadas por el delimitador classpath específico de la plataforma.
Requerido por -incremental.

-referencias cruzadas
Genere un archivo .ajsym de compilación en el directorio de salida. Se utiliza para ver
referencias transversales por herramientas como el navegador AspectJ.

-emacssym Genera archivos de símbolos .ajesym para compatibilidad con emacs (obsoleto).

-Xlint Igual que -Xlint:advertencia (habilitado de forma predeterminada)

-Xlint:{nivel}
Establezca el nivel predeterminado para los mensajes sobre posibles errores de programación en
código transversal. {level} puede ser ignorado, advertencia o error. Esto anula
entradas en org/aspectj/weaver/XlintDefault.properties de aspectjtools.jar, pero
no anula los niveles establecidos con la opción -Xlintfile.

-Xlintarchivo Archivo de propiedad
Especifique el archivo de propiedades para establecer niveles para mensajes transversales específicos.
PropertyFile es una ruta a un archivo Java .properties que toma la misma propiedad
nombres y valores como org/aspectj/weaver/XlintDefault.properties de
aspectjtools.jar, que también anula.

-ayuda a Emitir información sobre las opciones y el uso del compilador

-version Emite la versión del compilador AspectJ

-ruta de clases Path
Especifique dónde encontrar los archivos de clase de usuario. Path es un solo argumento que contiene un
lista de rutas a archivos zip o directorios, delimitada por la plataforma específica
delimitador de ruta

-ruta de clase de arranque Path
Anule la ubicación de bootclasspath de VM para evaluar tipos cuando
compilando Ruta es un único argumento que contiene una lista de rutas a archivos comprimidos o
directorios, delimitados por el delimitador de ruta específico de la plataforma.

-extdirs Path
Anular la ubicación de los directorios de extensión de VM para fines de evaluación de tipos
al compilar. Ruta es un único argumento que contiene una lista de rutas a
directorios, delimitados por el delimitador de ruta específico de la plataforma.

-d Directorio
Especifique dónde colocar los archivos .class generados. Si no se especifica, Directorio
el valor predeterminado es el directorio de trabajo actual.

-objetivo [1.1 a 1.5]
Especifique la configuración de destino del archivo de clase (1.1 a 1.5, el valor predeterminado es 1.2)

-1.3 Establezca el nivel de cumplimiento en 1.3 Esto implica -fuente 1.3 y -objetivo 1.1.

-1.4 Establezca el nivel de cumplimiento en 1.4 (predeterminado) Esto implica -origen 1.4 y -objetivo 1.2.

-1.5 Establecer el nivel de cumplimiento en 1.5. Esto implica -source 1.5 y -target 1.5.

-Fuente [1.3 | 1.4 | 1.5]
Alternar aserciones (1.3, 1.4 o 1.5; el valor predeterminado es 1.4). Al usar -source 1.3,
una declaración de afirmación () válida en Java 1.4 dará como resultado un error de compilación.
Cuando use -source 1.4, trate afirmar como palabra clave e implementar aserciones
de acuerdo con la especificación de idioma 1.4. Al usar -source 1.5, lenguaje Java 5
las características están permitidas.

-nowarn No emite advertencias (equivalente a '-warn:none') Esto no suprime los mensajes
generado por declarar advertencia or xlint.

-advertir: artículos
Emitir advertencias para cualquier instancia de la lista delimitada por comas de código cuestionable
(por ejemplo, '-warn:unusedLocals,deprecation'):

método constructorName con nombre de constructor
packageDefaultMethod intenta anular el método predeterminado del paquete
uso obsoleto de tipo o miembro obsoleto
maskedCatchBlocks bloque de captura oculto
la variable local unusedLocals nunca se lee
el argumento del método unusedArguments nunca se lee
instrucción de importación unusedImports no utilizada por el código en el archivo
ninguno suprime todas las advertencias del compilador

-advertir: ninguno no suprime los mensajes generados por declarar advertencia or xlint.

-deprecación
Igual que -warn:obsoleto

-noImportError
No emitir errores para importaciones no resueltas

-procederEnError
Siga compilando después de un error, descargando archivos de clase con métodos problemáticos

-g: [líneas, vars, fuente]
nivel de atributos de depuración, que puede tomar tres formas:

-g toda la información de depuración ('-g:lines,vars,source')
-g: ninguno sin información de depuración
-g: {elementos} información de depuración para cualquiera/todas las [líneas, variables, fuente], por ejemplo,
-g:líneas,fuente

-preserveAllLocals
Conservar todas las variables locales durante la generación de código (para facilitar la depuración).

-referenciaInfo
Calcular información de referencia.

-codificación formato
Especifique el formato de codificación de origen predeterminado. Especifique la codificación personalizada en un archivo por
base agregando el sufijo '[codificación]' a cada nombre de carpeta/archivo fuente de entrada.

-verbose Emite mensajes sobre las unidades de compilación accedidas/procesadas

-showWeaveInfo
Emitir mensajes sobre el tejido.

-Iniciar sesión presentar Especifique un archivo de registro para los mensajes del compilador.

-progress Muestra el progreso (requiere el modo -log).

-tiempo Mostrar información de velocidad.

-noExit No llamar a System.exit(n) al final de la compilación (n=0 si no hay error)

-repetir N Repita el proceso de compilación N veces (normalmente para realizar análisis de rendimiento).

-XterminateDespués de la compilación
Hace que el compilador termine antes de tejer

-XaddSerialVersionUID
Hace que el compilador calcule y agregue el campo SerialVersionUID a cualquier tipo
implementando Serializable que se ve afectado por un aspecto. el campo es
calculado en base a la clase antes de que haya tenido lugar el tejido.

-Xreweable[:comprimir]
(Experimental: en desuso ahora por defecto) Ejecuta weaver en modo reweavable que
hace que cree clases tejidas que se pueden volver a tejer, sujetas a la
restricción que al intentar un retejido todos los tipos que aconsejó el tejido
tipo debe ser accesible.

-XnoEn línea
(Experimental) no se alinee con los consejos

-Xarchivoincremental presentar
(Experimental) Esto funciona como el modo incremental, pero usando un archivo en lugar de
entrada estándar para controlar el compilador. Se volverá a compilar cada vez que el archivo se
cambia y se detiene cuando se elimina el archivo.

-XserializableAspectos
(Experimental) Normalmente es un error declarar aspectos Serializables. Esta
La opción elimina esa restricción.

-Xnotretejible
(Experimental) Cree archivos de clase que AspectJ no pueda volver a tejer posteriormente.

-Xajruntimelevel:1.2, ajruntimelevel:1.5
(Experimental) Permite generar código que apunta a un nivel 1.2 o 1.5
Tiempo de ejecución de AspectJ (predeterminado 1.5)

Archive nombres
ajc acepta archivos fuente con el .Java extensión o la .aj extensión. Nosotros
normalmente uso .Java para todos nuestros archivos en un sistema AspectJ -- archivos que contienen aspectos
así como archivos que contienen clases. Sin embargo, si tiene la necesidad de mecánicamente
distinguir los archivos que usan la funcionalidad adicional de AspectJ de aquellos que son puros
Java recomendamos usar el .aj extensión para esos archivos.

Nos gustaría desaconsejar otros medios de distinción mecánica, como las convenciones de nomenclatura.
o subpaquetes a favor del .aj extensión.

· Las convenciones de nombres de archivo son difíciles de hacer cumplir y dan lugar a nombres incómodos para tus aspectos.
En lugar de TrazadoAspecto.java recomendamos usar Rastreo.aj (o solo Rastreo.java)
preferiblemente.

· Los subpaquetes mueven aspectos fuera de su lugar natural en un sistema y pueden crear un
necesidad artificial de aspectos privilegiados. En lugar de agregar un subpaquete como
aspectos recomendamos usar el .aj extensión e incluyendo estos archivos en su
paquetes existentes en su lugar.

Compatibilidad
AspectJ es una extensión compatible con el lenguaje de programación Java. El compilador AspectJ
se adhiere a la El Java Idioma especificación, Segundo Edición (BOOK)
http://java.sun.com/docs/books/jls/index.html y al El Java Virtual Máquina
Especificación, Segundo Edición (BOOK) http://java.sun.com/docs/books/vmspec/index.html y
se ejecuta en cualquier plataforma compatible con Java 2. El código que genera se ejecuta en cualquier Java 1.1 o
plataforma compatible posterior. Para obtener más información sobre la compatibilidad con Java y con
versiones anteriores de AspectJ, consulte "" >.

Ejemplos
A simples ejemplo

Compilar dos archivos:

ajc HolaMundo.java Trace.java

An ejemplo usando -archivoarg/@

Para evitar especificar nombres de archivo en la línea de comandos, enumere los archivos de origen en una lista delimitada por líneas.
archivo de argumentos de texto. Las rutas del archivo fuente pueden ser absolutas o relativas al archivo arg y pueden
incluir otros archivos arg por @-reference. el siguiente archivo fuentes.lst contiene
archivos absolutos y relativos y @-referencias:

gui.java
/home/usuario/src/Biblioteca.java
datos/Repositorio.java
datos/Acceso.java
@../../común/común.lst
@/home/usuario/src/lib.lst
vista/cuerpo/ArrayView.java

Compile los archivos utilizando el formato -argfile o @:

ajc -argfile fuentes.lst
ajc @fuentes.lst

Los archivos Argfile también son compatibles con jikes y javac, por lo que puede usar los archivos en compilaciones híbridas.
Sin embargo, el apoyo varía:

· Solo ajc acepta opciones de línea de comandos

· Jikes y Javac no aceptan referencias internas @argfile.

· Jikes y Javac solo aceptan el formulario @file en la línea de comandos.

An ejemplo usando -entrada y -ruta de aspecto

Tejido de código de bytes usando -inpath: AspectJ 1.2 admite archivos .class tejidos en zip/jar de entrada
archivos y directorios. Usar jars de entrada es como compilar los archivos fuente correspondientes,
y todos los binarios se emiten a la salida. Aunque los compiladores compatibles con Java pueden diferir en
su salida, ajc debe tomar como entrada cualquier archivo de clase producido por javac, jikes, eclipse,
y, por supuesto, ajc. Los aspectos incluidos en -inpath se entrelazarán como otros .class
archivos, y afectarán a otros tipos como de costumbre.

Bibliotecas de aspectos que usan -aspectpath: AspectJ 1.1 admite el tejido de bibliotecas de solo lectura
que contienen aspectos. Al igual que los frascos de entrada, afectan a todas las entradas; a diferencia de los frascos de entrada, ellos
ellos mismos no se ven afectados o emitidos como salida. Fuentes compiladas con bibliotecas de aspectos
debe ejecutarse con las mismas bibliotecas de aspectos en su classpath.

El siguiente ejemplo crea el ejemplo de seguimiento en un entorno de línea de comandos; crea
una biblioteca de aspectos de solo lectura, compila algunas clases para usar como bytecode de entrada y compila
las clases y otras fuentes con la biblioteca de aspectos.

El ejemplo de rastreo está en la distribución de AspectJ ({aspectj}/doc/examples/tracing). Esta
utiliza los siguientes archivos:

aspectoj1.1/
compartimiento/
ajc
lib /
Aspectjrt.jar
ejemplos /
rastreo/
círculo.java
EjemploPrincipal.java
lib /
ResumenTrace.java
TrazaMisClases.java
notrace.lst
cuadrado.java
tracelib.lst
tracev3.lst
DosDForma.java
versión3/
Seguimiento.java
TrazaMisClases.java

A continuación, el separador de ruta se toma como ";", pero los separadores de archivos son "/". Todos los comandos son
en una línea Ajuste las rutas y los comandos a su entorno según sea necesario.

Configure la ruta, classpath y el directorio actual:

ejemplos de cd
exportar ajrt=../lib/aspectjrt.jar
exportar CLASSPATH="$ajrt"
exportar RUTA="../compartimiento: $ PATH "

Cree una biblioteca de seguimiento de solo lectura:

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

Cree la aplicación con seguimiento en un solo paso:

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

Ejecute la aplicación con seguimiento:

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

Cree la aplicación con seguimiento de archivos binarios en dos pasos:

· (a) Cree las clases de la aplicación (usando javac como demostración):

clases mkdir
javac -d rastreo de clases/*.java
jar cfM app.jar -C clases.

· (b) Construir la aplicación con rastreo:

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

Ejecute la aplicación con seguimiento (igual que arriba):

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

Ejecute la aplicación sin rastrear:

seguimiento java -classpath "app.jar".ExampleMain

El AspectoJ compilador API
El compilador de AspectJ se implementa completamente en Java y se puede llamar como una clase de Java.
La única interfaz que debe considerarse pública son los métodos públicos en
org.aspectj.tools.ajc.Principal. P.ej, principal(Cadena[] argumentos) toma el estándar ajc comando
argumentos de línea. Esto significa que una forma alternativa de ejecutar el compilador es

Java org.aspectj.tools.ajc.Principal [opción...] [archivo...]

Para acceder a los mensajes del compilador mediante programación, utilice los métodos setHolder(IMessageHolder
poseedor) y/o ejecutar(Cadena[] argumentos, Titular de mensaje poseedor). ajc reporta cada mensaje al
titular usando IMessageHolder.handleMessage(..). Si solo desea recopilar los mensajes,
utilizan el Manejador de mensajes como tu Titular de mensaje. Por ejemplo, compile y ejecute el
siguiendo con aspectojtools.jar en el classpath:

importar org.aspectj.puente.*;
importar org.aspectj.tools.ajc.Main;
importar java.util.Arrays;

clase pública WrapAjc {
principales argumentos (String []) {public static void
Compilador principal = new Main();
Manejador de Mensajes m = nuevo Manejador de Mensajes();
compilador.ejecutar(argumentos, m);
IMessage[] ms = m.getMessages(nulo, verdadero);
System.out.println("mensajes: " + Arreglos.asList(Sra));
}
}

Apilar Las huellas y las Archivo fuente atributo
A diferencia de los compiladores java tradicionales, el compilador AspectJ puede, en ciertos casos, generar
classfiles de múltiples archivos fuente. Desafortunadamente, el formato de archivo de clase Java original
no admite varios atributos de SourceFile. Para asegurarse de que todo el archivo fuente
la información está disponible, el compilador de AspectJ puede, en algunos casos, codificar varios nombres de archivo
en el atributo SourceFile. Cuando Java VM genera seguimientos de pila, utiliza este
atributo para especificar el archivo de origen.

(El compilador AspectJ 1.0 también es compatible con las extensiones de archivo .class de JSR-45. Estos
permitir que los depuradores compatibles (como jdb en Java 1.4.1) identifiquen el archivo y la línea correctos
incluso dados muchos archivos fuente para una sola clase. El soporte JSR-45 está planeado para ajc en
AspectJ 1.1, pero no está en la versión inicial. Para obtener archivos .class completamente depurables, use
la opción -XnoInline).

Probablemente, la única vez que puede ver este formato es cuando ve los seguimientos de la pila, donde
puede encontrar rastros del formato

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

donde en lugar de lo habitual

Archivo:Número de línea

formato, ya ves

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

En este caso, LineNumber es el desplazamiento habitual en líneas más la "línea de inicio" del actual
archivo fuente. Eso significa que usa LineNumber tanto para identificar el archivo fuente como para encontrar
la línea en cuestión. El número entre [paréntesis] después de cada archivo le indica el "inicio" virtual
línea" para ese archivo (el primer archivo tiene un comienzo de 0).

En nuestro ejemplo del seguimiento de excepción de puntero nulo, la línea de inicio virtual es 1030.
Dado que el archivo SynchAspect.java "comienza" en la línea 1000 [1k], LineNumber apunta a la línea
30 de SynchAspect.java.

Por lo tanto, cuando se enfrenta a tales seguimientos de pila, la forma de encontrar la ubicación de origen real es
mire a través de la lista de números de "línea de inicio" para encontrar el que está justo debajo de la línea que se muestra
número. Ese es el archivo donde realmente se puede encontrar la ubicación de origen. Luego, resta
esa "línea de inicio" del número de línea que se muestra para encontrar el número de línea real dentro de ese
archivo.

En un archivo de clase que proviene de un único archivo fuente, el compilador de AspectJ genera
Atributos de SourceFile consistentes con los compiladores de Java tradicionales.

ajc(1)

Use ajc en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad