InglêsFrancêsEspanhol

Ad


favicon do OnWorks

ajc - On-line na nuvem

Execute ajc no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando ajc que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


ajc — compilador e tecelão de bytecode para as linguagens AspectJ e Java

SINOPSE


ajc [Opções] [Arquivo... | @Arquivo... | -argfile Arquivo... ]

Descrição


A ajc O comando compila e entrelaça arquivos de origem e .class AspectJ e Java, produzindo
Arquivos .class compatíveis com qualquer Java VM (1.1 ou posterior). Ele combina compilação e
tecelagem de bytecode e suporta compilações incrementais; você também pode tecer bytecode em tempo de execução
utilização "" >.

Os argumentos após as opções especificam os arquivos de origem a serem compilados. Para especificar a origem
aulas, uso -inpath (abaixo). Os arquivos podem ser listados diretamente na linha de comando ou em um
Arquivo. o -argfile lima e @lima formas são equivalentes e são interpretadas como significado
todos os argumentos listados no arquivo especificado.

Observação: Você deve passar explicitamente ajc todas as fontes necessárias. Certifique-se de incluir a fonte
não apenas para os aspectos ou pontos de corte, mas também para quaisquer tipos afetados. Especificando tudo
fontes é necessário porque, diferentemente do javac, o ajc não pesquisa o caminho de origem por
Aulas. (Para uma discussão sobre quais tipos afetados podem ser necessários, consulte A AspectoJ
Programação Guia, Implementação Apêndice ../progguide/implementation.html) .

Para especificar fontes, você pode listar os arquivos de origem como argumentos ou usar as opções -raízes de origem
or -inpath. Se houver múltiplas fontes para qualquer tipo, o resultado será indefinido, pois ajc
não tem como determinar qual fonte está correta. (Isso acontece com mais frequência quando os usuários
inclua o diretório de destino no inpath e reconstrua.)

Opções
-injars JarList
obsoleto: desde 1.2, use -inpath, que também aceita diretórios.

-inpath Caminho
Aceite como bytecode de origem qualquer arquivo .class no A saída incluirá estes
classes, possivelmente tecidas com quaisquer aspectos aplicáveis. O caminho é único
argumento contendo uma lista de caminhos para arquivos zip ou diretórios, delimitados por
o delimitador de caminho específico da plataforma.

-aspectpath Caminho
Transforme aspectos binários de arquivos jar e diretórios no caminho para todas as fontes.
Os aspectos deveriam ter sido gerados pela mesma versão do compilador. Quando
executando as classes de saída, o caminho de classe de execução deve conter todos os aspectos
entradas. Path, assim como classpath, é um único argumento contendo uma lista de caminhos
para arquivos jar, delimitados pelo delimitador de caminho de classe específico da plataforma.

-argfile Envie o
O arquivo contém uma lista de argumentos delimitada por linhas. Cada linha do arquivo
deve conter uma opção, nome de arquivo ou string de argumento (por exemplo, um caminho de classe ou
caminho de entrada). Os argumentos lidos do arquivo são inseridos na lista de argumentos para
o comando. Os caminhos relativos no arquivo são calculados a partir do diretório
contendo o arquivo (não o diretório de trabalho atual). Comentários, como em Java,
começar com // e estenda até o final da linha. Opções especificadas no argumento
arquivos podem substituir em vez de estender os valores de opções existentes, portanto, evite
especificando opções como -caminho de classe em arquivos de argumentos, diferentemente do
arquivo de argumento é a única especificação de construção. A forma @Arquivo é o mesmo que
especificando -argfile lima.

-outjar saída.jar
Coloque as classes de saída no arquivo zip output.jar.

-outxml Gera o arquivo aop.xml para tecelagem em tempo de carregamento com nome padrão.

-outxmlfile custom/aop.xml
Gere o arquivo aop.xml para tecelagem em tempo de carregamento com nome personalizado.

-incremental
Execute o compilador continuamente. Após a compilação inicial, o compilador irá
espere para recompilar até que ele leia uma nova linha da entrada padrão e irá
saia quando ler um 'q'. Ele apenas recompilará os componentes necessários, então um
recompilar deve ser muito mais rápido do que fazer uma segunda compilação. Isto exige
-raízes de origem.

-raízes de origem DirPaths
Encontre e crie todos os arquivos de origem .java ou .aj em qualquer diretório listado em
DirPaths. DirPaths, assim como classpath, é um único argumento contendo uma lista de
caminhos para diretórios, delimitados pelo delimitador de caminho de classe específico da plataforma.
Exigido por -incremental.

-referências cruzadas
Gere um arquivo build .ajsym no diretório de saída. Usado para visualização
referências transversais por ferramentas como o AspectJ Browser.

-emacssym Gera arquivos de símbolos .ajesym para suporte ao emacs (obsoleto).

-Xlint O mesmo que -Xlint:warning (habilitado por padrão)

-Xlint:{nível}
Defina o nível padrão para mensagens sobre possíveis erros de programação em
código transversal. {nível} pode ser ignorar, aviso ou erro. Isso substitui
entradas em org/aspectj/weaver/XlintDefault.properties de aspectojtools.jar, mas
não substitui os níveis definidos usando a opção -Xlintfile.

-Xlintfile Arquivo de propriedades
Especifique o arquivo de propriedades para configurar níveis para mensagens transversais específicas.
PropertyFile é um caminho para um arquivo Java .properties que usa a mesma propriedade
nomes e valores como org/aspectj/weaver/XlintDefault.properties de
aspectojtools.jar, que também substitui.

-help Emite informações sobre opções e uso do compilador

-version Emite a versão do compilador AspectJ

-caminho de classe Caminho
Especifique onde encontrar os arquivos de classe do usuário. Caminho é um único argumento contendo um
lista de caminhos para arquivos zip ou diretórios, delimitados pela plataforma específica
delimitador de caminho.

-bootclasspath Caminho
Substitua a localização do bootclasspath da VM para fins de avaliação de tipos quando
compilando. Path é um argumento único que contém uma lista de caminhos para arquivos zip ou
diretórios, delimitados pelo delimitador de caminho específico da plataforma.

-extdirs Caminho
Substituir a localização dos diretórios de extensão da VM para fins de avaliação de tipos
ao compilar. Path é um único argumento que contém uma lista de caminhos para
diretórios, delimitados pelo delimitador de caminho específico da plataforma.

-d Diretório
Especifique onde colocar os arquivos .class gerados. Se não for especificado, Diretório
o padrão é o diretório de trabalho atual.

-alvo [1.1 para 1.5]
Especifique a configuração de destino do arquivo de classe (1.1 a 1.5, o padrão é 1.2)

-1.3 Defina o nível de conformidade para 1.3 Isso implica -source 1.3 e -target 1.1.

-1.4 Defina o nível de conformidade para 1.4 (padrão). Isso implica -source 1.4 e -target 1.2.

-1.5 Defina o nível de conformidade para 1.5. Isso implica -source 1.5 e -target 1.5.

-source [1.3 | 1.4 | 1.5]
Alternar asserções (1.3, 1.4 ou 1.5 – o padrão é 1.4). Ao usar -source 1.3,
uma instrução assert() válida em Java 1.4 resultará em um erro do compilador.
Ao usar -source 1.4, trate afirmar como uma palavra-chave e implementar asserções
de acordo com a especificação do idioma 1.4. Ao usar -source 1.5, linguagem Java 5
recursos são permitidos.

-nowarn Não emite avisos (equivalente a '-warn:none') Isso não suprime mensagens
gerado por declarar aviso or Xlint.

-avisar: Unid
Emitir avisos para quaisquer instâncias da lista delimitada por vírgulas de códigos questionáveis
(por exemplo, '-warn:unusedLocals,deprecation'):

método constructorName com nome do construtor
packageDefaultMethod tenta substituir o método padrão do pacote
uso de depreciação de tipo ou membro obsoleto
maskedCatchBlocks bloco de captura oculto
Variável local unusedLocals nunca lida
argumento do método unusedArguments nunca lido
Instrução de importação unusedImports não usada pelo código no arquivo
nenhum suprime todos os avisos do compilador

-aviso: nenhum não suprime mensagens geradas por declarar aviso or Xlint.

- depreciação
O mesmo que -warn:deprecation

-noImportError
Não emita erros para importações não resolvidas

-proceedOnError
Continue compilando após erro, despejando arquivos de classe com métodos problemáticos

-g: [linhas, vars, fonte]
nível de atributos de depuração, que pode assumir três formas:

-g todas as informações de depuração ('-g:lines,vars,source')
-g:none, sem informações de depuração
-g:{items} informações de depuração para qualquer/todos [lines, vars, source], por exemplo,
-g: linhas, fonte

-preserveAllLocals
Preserve todas as variáveis ​​locais durante a geração do código (para facilitar a depuração).

-referênciaInfo
Calcular informações de referência.

-codificação formato
Especifique o formato de codificação de origem padrão. Especifique a codificação personalizada em cada arquivo
base, sufixando cada nome de arquivo/pasta de origem de entrada com '[codificação]'.

-verbose Emite mensagens sobre unidades de compilação acessadas/processadas

-showWeaveInfo
Emita mensagens sobre tecelagem

-registro lima Especifique um arquivo de log para mensagens do compilador.

-progress Mostra o progresso (requer modo -log).

-time Exibe informações de velocidade.

-noExit Não chama System.exit(n) no final da compilação (n=0 se não houver erro)

-repetir N Repita o processo de compilação N vezes (normalmente para fazer análise de desempenho).

-XterminateAfterCompilação
Faz com que o compilador termine antes de tecer

-XaddSerialVersionUID
Faz com que o compilador calcule e adicione o campo SerialVersionUID a qualquer tipo
implementando Serializable que é afetado por um aspecto. O campo é
calculado com base na classe antes da tecelagem.

-Xreweavable[:comprimir]
(Experimental - obsoleto como agora padrão) Executa o weaver no modo reweavable que
faz com que ele crie classes tecidas que podem ser retecidas, sujeitas à
restrição de que ao tentar refazer todos os tipos que aconselhavam o tecido
tipo deve ser acessível.

-XnoInline
(Experimental) não se alinhe com conselhos

-XincrementalArquivo lima
(Experimental) Funciona como o modo incremental, mas usando um arquivo em vez de
entrada padrão para controlar o compilador. Ele irá recompilar cada vez que o arquivo for
alterado e interrompido quando o arquivo é excluído.

-XserializableAspectos
(Experimental) Normalmente é um erro declarar aspectos Serializable. Esse
opção remove essa restrição.

-XnotReweavable
(Experimental) Crie arquivos de classe que não possam ser reconstruídos posteriormente pelo AspectJ.

-Xajruntimelevel:1.2, ajruntimelevel:1.5
(Experimental) Permite a geração de código direcionado ao nível 1.2 ou 1.5
Tempo de execução AspectJ (padrão 1.5)

Envie o nomes
ajc aceita arquivos de origem com o .Java extensão ou o .aj extensão. Nós
normalmente usa .Java para todos os nossos arquivos em um sistema AspectJ - arquivos que contêm aspectos
bem como arquivos que contêm classes. No entanto, se você precisar mecanicamente
distinguir arquivos que usam funcionalidade adicional do AspectJ daqueles que são puros
Java, recomendamos usar o .aj extensão para esses arquivos.

Gostaríamos de desencorajar outros meios de distinção mecânica, como convenções de nomenclatura
ou subpacotes em favor do .aj extensão.

· As convenções de nomes de arquivos são difíceis de aplicar e levam a nomes estranhos para seus aspectos.
Em vez de TracingAspect.java nós recomendamos usar Rastreamento.aj (ou apenas Rastreamento.java)
ao invés.

· Os subpacotes movem aspectos para fora de seu lugar natural em um sistema e podem criar um
necessidade artificial de aspectos privilegiados. Em vez de adicionar um subpacote como
aspectos Recomendamos usar o .aj extensão e incluindo esses arquivos em seu
pacotes existentes.

Compatibilidade
AspectJ é uma extensão compatível com a linguagem de programação Java. O compilador AspectJ
adere ao A Java Língua Especificação, Segundo edição (LIVRO)
http://java.sun.com/docs/books/jls/index.html e para o A Java Virtual Lavagem
Especificação, Segundo edição (LIVRO) http://java.sun.com/docs/books/vmspec/index.html e
roda em qualquer plataforma compatível com Java 2. O código que ele gera é executado em qualquer Java 1.1 ou
plataforma compatível posterior. Para obter mais informações sobre compatibilidade com Java e com
versões anteriores do AspectJ, consulte "" >.

Exemplos
A simples exemplo

Compile dois arquivos:

ajc HelloWorld.java Trace.java

An exemplo utilização -argfile/@

Para evitar especificar nomes de arquivos na linha de comando, liste os arquivos de origem em um formato delimitado por linha
arquivo de texto. Os caminhos do arquivo de origem podem ser absolutos ou relativos ao arquivo arg e podem
inclua outros arquivos arg por referência @. O seguinte arquivo fontes.lst contém
arquivos absolutos e relativos e referências @:

Gui.java
/home/usuário/src/Library.java
dados/Repositório.java
dados/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
visualizar/corpo/ArrayView.java

Compile os arquivos usando o formato -argfile ou @:

ajc -argfile fontes.lst
ajc @sources.lst

Argfiles também são suportados por jikes e javac, então você pode usar os arquivos em compilações híbridas.
No entanto, o suporte varia:

· Somente ajc aceita opções de linha de comando

· Jikes e Javac não aceitam referências internas a @argfile.

· Jikes e Javac aceitam apenas o formato @file na linha de comando.

An exemplo utilização -inpath e -aspectpath

Tecelagem de bytecode usando -inpath: AspectJ 1.2 suporta tecelagem de arquivos .class em zip/jar de entrada
arquivos e diretórios. Usar jars de entrada é como compilar os arquivos de origem correspondentes,
e todos os binários são emitidos para saída. Embora os compiladores compatíveis com Java possam diferir em
sua saída, ajc deve receber como entrada quaisquer arquivos de classe produzidos por javac, jikes, eclipse,
e, claro, ajc. Os aspectos incluídos em -inpath serão integrados como outros .class
arquivos, e eles afetarão outros tipos como de costume.

Bibliotecas Aspect usando -aspectpath: AspectJ 1.1 suporta tecelagem de bibliotecas somente leitura
contendo aspectos. Assim como os jars de entrada, eles afetam todas as entradas; diferentemente dos jars de entrada, eles
em si não são afetados ou emitidos como saída. Fontes compiladas com bibliotecas de aspectos
deve ser executado com as mesmas bibliotecas de aspecto em seu caminho de classe.

O exemplo a seguir cria o exemplo de rastreamento em um ambiente de linha de comando; ele cria
uma biblioteca de aspecto somente leitura, compila algumas classes para uso como bytecode de entrada e compila
as classes e outras fontes com a biblioteca de aspectos.

O exemplo de rastreamento está na distribuição AspectJ ({aspectj}/doc/examples/tracing). Esse
usa os seguintes arquivos:

aspectoj1.1/
bin /
ajc
lib /
aspectojrt.jar
exemplos /
rastreamento/
Círculo.java
ExemploMain.java
lib /
ResumoTrace.java
TraceMyClasses.java
notrace.lst
Quadrado.java
tracelib.lst
tracev3.lst
TwoDShape.java
versão3/
Rastreamento.java
TraceMyClasses.java

Abaixo, o separador de caminho é considerado ";", mas os separadores de arquivo são "/". Todos os comandos são
em uma linha. Ajuste caminhos e comandos ao seu ambiente conforme necessário.

Configure o caminho, caminho de classe e diretório atual:

exemplos de cd
exportar ajrt=../lib/aspectjrt.jar
exportar CLASSPATH="$ajrt"
exportar PATH="../ bin: $ PATH "

Crie uma biblioteca de rastreamento somente leitura:

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

Crie o aplicativo com rastreamento em uma única etapa:

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

Execute o aplicativo com rastreamento:

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

Crie o aplicativo com rastreamento de binários em duas etapas:

· (a) Construa as classes da aplicação (usando javac para demonstração):

classes mkdir
javac -d rastreamento de classes/*.java
jar cfM app.jar -C classes.

· (b) Construa a aplicação com rastreamento:

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

Execute o aplicativo com rastreamento (igual ao acima):

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

Execute o aplicativo sem rastrear:

java -classpath "app.jar" rastreamento.ExampleMain

A AspectoJ compilador API
O compilador AspectJ é implementado completamente em Java e pode ser chamado como uma classe Java.
A única interface que deve ser considerada pública são os métodos públicos em
org.aspectj.tools.ajc.Main. Por exemplo, principal(String[] argumentos) leva o padrão ajc comando
argumentos de linha. Isso significa que uma maneira alternativa de executar o compilador é

Java org.aspectj.tools.ajc.Main [opção...] [Arquivo...]

Para acessar mensagens do compilador programaticamente, use os métodos setHolder(IMessageHolder
suporte) e / ou executar(String[] argumentos, IMessageHolder suporte). ajc reporta cada mensagem ao
suporte usando IMessageHolder.handleMessage(..). Se você quiser apenas coletar as mensagens,
usar Manipulador de mensagens como seu IMessageHolder. Por exemplo, compile e execute o
seguindo com aspectojtools.jar no caminho de classe:

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

classe pública WrapAjc {
main (String [] args) public static void {
Compilador principal = new Main();
MessageHandler m = new MessageHandler();
compilador.run(args, m);
IMessage[] ms = m.getMessages(nulo, verdadeiro);
System.out.println("mensagens: " + Arrays.asList(EM));
}
}

Pilha Traços e que o Arquivo fonte atributo
Ao contrário dos compiladores Java tradicionais, o compilador AspectJ pode, em certos casos, gerar
classfiles de vários arquivos de origem. Infelizmente, o formato original do arquivo de classe Java
não oferece suporte a vários atributos SourceFile. Para garantir que todo o arquivo de origem
informações estão disponíveis, o compilador AspectJ pode, em alguns casos, codificar vários nomes de arquivos
no atributo SourceFile. Quando o Java VM gera rastreamentos de pilha, ele usa este
atributo para especificar o arquivo de origem.

(O compilador AspectJ 1.0 também suporta as extensões de arquivo .class do JSR-45. Estas
permitir que depuradores compatíveis (como jdb em Java 1.4.1) identifiquem o arquivo e a linha corretos
mesmo com muitos arquivos de origem para uma única classe. O suporte JSR-45 está planejado para ajc em
AspectJ 1.1, mas não está na versão inicial. Para obter arquivos .class totalmente depuráveis, use
a opção -XnoInline.)

Provavelmente, a única vez que você verá esse formato será ao visualizar rastreamentos de pilha, onde você
pode encontrar vestígios do formato

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

onde em vez do habitual

Arquivo:NúmeroLinha

formato, você vê

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

Neste caso, LineNumber é o deslocamento usual em linhas mais a "linha inicial" do real
arquivo fonte. Isso significa que você usa LineNumber para identificar o arquivo de origem e para encontrar
a linha em questão. O número entre [colchetes] após cada arquivo informa o "início" virtual
line" para esse arquivo (o primeiro arquivo tem início em 0).

Em nosso exemplo do rastreamento de exceção de ponteiro nulo, a linha inicial virtual é 1030.
Como o arquivo SynchAspect.java "inicia" na linha 1000 [1k], o LineNumber aponta para a linha
30 de SynchAspect.java.

Portanto, quando confrontado com tais rastreamentos de pilha, a maneira de encontrar o local de origem real é
procure na lista de números da "linha inicial" para encontrar aquele logo abaixo da linha mostrada
número. Esse é o arquivo onde o local de origem pode realmente ser encontrado. Então, subtraia
aquela "linha inicial" do número da linha mostrado para encontrar o número da linha real dentro desse
arquivo.

Em um arquivo de classe que vem de apenas um único arquivo de origem, o compilador AspectJ gera
Atributos SourceFile consistentes com compiladores Java tradicionais.

ajc(1)

Use ajc online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

Comandos Linux

Ad