英語フランス語スペイン語

Ad


OnWorksファビコン

ajc-クラウドでのオンライン

Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、またはMACOSオンラインエミュレーターを介してOnWorks無料ホスティングプロバイダーでajcを実行します

これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドajcです。

プログラム:

NAME


ajc —AspectJおよびJava言語用のコンパイラおよびバイトコードウィーバー

SYNOPSIS


AJC [オプション] [ファイル... | | @ファイル... | | -argfile ファイル... ]

説明


  AJC コマンドは、AspectJおよびJavaのソースファイルと.classファイルをコンパイルおよびウィーブし、生成します。
Java VM(1.1以降)に準拠した.classファイル。 コンパイルと
バイトコードウィービングとインクリメンタルビルドのサポート。 実行時にバイトコードを織り込むこともできます
"" >.

オプションの後の引数は、コンパイルするソースファイルを指定します。 ソースを指定するには
クラス、使用 -インパス (下)。 ファイルは、コマンドラインに直接リストすることも、
ファイル。 ザ -argfile file & @file フォームは同等であり、意味として解釈されます
指定されたファイルにリストされているすべての引数。

注: 明示的に渡す必要があります AJC 必要なすべてのソース。 ソースを必ず含めてください
アスペクトやポイントカットだけでなく、影響を受けるタイプにも適用されます。 すべてを指定する
javacとは異なり、ajcはソースパスを検索しないため、ソースが必要です。
クラス。 (影響を受けるタイプが必要になる可能性がある場合の説明については、を参照してください。   アスペクトJ
プログラミング ガイド、 製品の導入 付録 ../progguide/implementation.html) .

ソースを指定するには、ソースファイルを引数として一覧表示するか、オプションを使用します -ソースルート
or -インパス。 いずれかのタイプに複数のソースがある場合、ajc以降、結果は未定義です。
どのソースが正しいかを判断する方法はありません。 (これは、ユーザーが
インパスに宛先ディレクトリを含めて再構築します。)

オプション
-インジャー JarList
非推奨:1.2以降、ディレクトリも使用する-inpathを使用してください。

-インパス パス
出力にこれらが含まれるすべての.classファイルをソースバイトコードとして受け入れます
クラス、おそらく適用可能な側面と織り交ぜられたものとして。 パスは単一です
zipファイルまたはディレクトリへのパスのリストを含む引数。
プラットフォーム固有のパス区切り文字。

-アスペクトパス パス
パス上のjarファイルとディレクトリからすべてのソースへのバイナリアスペクトを織り込みます。
アスペクトは、同じバージョンのコンパイラーによって出力されているはずです。 いつ
出力クラスを実行する場合、実行クラスパスにはすべてのアスペクトパスが含まれている必要があります
エントリ。 パスは、クラスパスと同様に、パスのリストを含む単一の引数です。
プラットフォーム固有のクラスパス区切り文字で区切られたjarファイルへ。

-argfile File
このファイルには、行で区切られた引数のリストが含まれています。 ファイルの各行
XNUMXつのオプション、ファイル名、または引数文字列(たとえば、クラスパスまたは
インパス)。 ファイルから読み取られた引数は、次の引数リストに挿入されます。
コマンド。 ファイル内の相対パスは、ディレクトリから計算されます
ファイルが含まれています(現在の作業ディレクトリではありません)。 コメント、Javaのように、
皮切りに // 行の終わりまで延長します。 引数で指定されたオプション
ファイルは既存のオプション値を拡張するのではなくオーバーライドする可能性があるため、避けてください
次のようなオプションを指定する -クラスパス とは異なり、引数ファイルで
引数ファイルが唯一のビルド仕様です。 フォーム @ファイル と同じです。
指定する -argfile file.

-アウトジャー 出力.jar
出力クラスをzipファイルoutput.jarに入れます。

-outxmlデフォルト名でロード時ウィービング用のaop.xmlファイルを生成します。

-outxmlファイル custom / aop.xml
カスタム名を使用してロード時ウィービング用のaop.xmlファイルを生成します。

-増分
コンパイラを継続的に実行します。 最初のコンパイル後、コンパイラは
標準入力から改行を読み取るまで再コンパイルするのを待ちます。
'q'を読み取ったときに終了します。 必要なコンポーネントのみを再コンパイルするため、
再コンパイルは、XNUMX回目のコンパイルよりもはるかに高速である必要があります。 これには
-sourceroots。

-ソースルート DirPath
にリストされている任意のディレクトリの下にあるすべての.javaまたは.ajソースファイルを見つけてビルドします
DirPaths。 クラスパスと同様に、DirPathsは、次のリストを含む単一の引数です。
プラットフォーム固有のクラスパス区切り文字で区切られたディレクトリへのパス。
-incrementalで必要です。

-相互参照
ビルド.ajsymファイルを出力ディレクトリに生成します。 表示に使用
AspectJブラウザなどのツールによる横断的な参照。

-emacssym emacsサポート用の.ajesymシンボルファイルを生成します(非推奨)。

-Xlint -Xlint:warningと同じ(デフォルトで有効)

-Xlint:{level}
プログラミングミスの可能性に関するメッセージのデフォルトレベルを設定する
横断的なコード。 {level}は、無視、警告、またはエラーの可能性があります。 これはオーバーライドします
org / aspectj / weaver / XlintDefault.propertiesのaspectjtools.jarからのエントリですが、
-Xlintfileオプションを使用して設定されたレベルを上書きしません。

-Xlintfile プロパティファイル
プロパティファイルを指定して、特定の横断的メッセージのレベルを設定します。
PropertyFileは、同じプロパティを使用するJava.propertiesファイルへのパスです。
org / aspectj / weaver/XlintDefault.propertiesとしての名前と値
これもオーバーライドするaspectjtools.jar。

-コンパイラのオプションと使用法に関する情報を出力するのに役立ちます

-versionAspectJコンパイラのバージョンを発行します

-クラスパス パス
ユーザークラスファイルの場所を指定します。 パスは、を含む単一の引数です
プラットフォーム固有で区切られた、zipファイルまたはディレクトリへのパスのリスト
パス区切り文字。

-ブートクラスパス パス
タイプを評価する目的でVMのブートクラスパスの場所をオーバーライドする場合
コンパイル。 パスは、zipファイルへのパスのリストを含む単一の引数です。
プラットフォーム固有のパス区切り文字で区切られたディレクトリ。

-extdirs パス
タイプを評価する目的でVMの拡張ディレクトリの場所を上書きする
コンパイルするとき。 パスは、へのパスのリストを含む単一の引数です
プラットフォーム固有のパス区切り文字で区切られたディレクトリ。

-d ディレクトリ
生成された.classファイルを配置する場所を指定します。 指定しない場合、 ディレクトリ
デフォルトは現在の作業ディレクトリです。

-目標 [1.1 〜へ 1.5]
クラスファイルのターゲット設定を指定します(1.1〜1.5、デフォルトは1.2)

-1.3コンプライアンスレベルを1.3に設定します。これは、-source1.3および-target1.1を意味します。

-1.4コンプライアンスレベルを1.4に設定します(デフォルト)。これは、-source1.4および-target1.2を意味します。

-1.5コンプライアンスレベルを1.5に設定します。 これは、-source1.5と-target1.5を意味します。

-source [1.3 | 1.4 | 1.5]
アサーションを切り替えます(1.3、1.4、または1.5-デフォルトは1.4)。 -source 1.3を使用する場合、
Java 1.4で有効なassert()ステートメントは、コンパイラエラーになります。
-source 1.4を使用する場合は、 アサート キーワードとしてアサーションを実装する
1.4言語仕様によると。 -source 1.5、Java5言語を使用する場合
機能は許可されています。

-nowarn警告を出力しません('-warn:none'と同等)これはメッセージを抑制しません
によって生成されます 宣言する 警告 or キシリント.

-暖かい: リーディングシート
疑わしいコードのコンマ区切りリストのインスタンスに対して警告を発します
(例:'-warn:unusedLocals、deprecation'):

コンストラクター名を持つconstructorNameメソッド
packageDefaultMethodはpackage-defaultメソッドをオーバーライドしようとします
非推奨のタイプまたはメンバーの非推奨の使用法
maskedCatchBlocks隠しキャッチブロック
usedLocalsローカル変数は決して読み取られません
usedArgumentsメソッドの引数は決して読み取られません
usedImportsインポートステートメントはファイル内のコードで使用されていません
noneすべてのコンパイラ警告を抑制します

-警告:なし によって生成されたメッセージを抑制しません 宣言する 警告 or キシリント.

-非推奨
-warn:deprecationと同じ

-noImportError
未解決のインポートに対してエラーを排出しない

-proceedOnError
エラー後もコンパイルを続け、問題のあるメソッドを含むクラスファイルをダンプします

-g:[lines、vars、source]
デバッグ属性レベル。XNUMXつの形式をとることがあります。

-gすべてのデバッグ情報('-g:lines、vars、source')
-g:noneデバッグ情報なし
-g:{items} [lines、vars、source]のいずれか/すべてのデバッグ情報。例:
-g:lines、source

-preserveAllLocals
コード生成中にすべてのローカル変数を保持します(デバッグを容易にするため)。

-参照情報
参照情報を計算します。

-エンコーディング 形式でアーカイブしたプロジェクトを保存します.
デフォルトのソースエンコーディング形式を指定します。 ファイルごとにカスタムエンコーディングを指定する
各入力ソースファイル/フォルダ名に「[encoding]」の接尾辞を付けます。

-アクセス/処理されたコンパイルユニットに関するメッセージを詳細に送信します

-showWeaveInfo
織りについてのメッセージを出す

-ログ file コンパイラメッセージのログファイルを指定します。

-progress進行状況を表示します(-logモードが必要です)。

-time速度情報を表示します。

-noExitコンパイルの最後にSystem.exit(n)を呼び出さないでください(エラーがない場合はn = 0)

-繰り返す N コンパイルプロセスをN回繰り返します(通常、パフォーマンス分析を行うため)。

-XterminateAfterCompilation
ウィービングする前にコンパイラを終了させます

-XaddSerialVersionUID
コンパイラにSerialVersionUIDフィールドを計算して任意のタイプに追加させます
アスペクトの影響を受けるSerializableを実装します。 フィールドは
織りが行われる前のクラスに基づいて計算されます。

-Xreweavable [:compress]
(実験的-現在はデフォルトとして非推奨)ウィーバーをリウィービング可能モードで実行します。
再編可能な織りクラスを作成します。
織りをアドバイスしたすべてのタイプの織り直しを試みる際の制限
タイプはアクセス可能でなければなりません。

-XnoInline
(実験的)アドバイスの周りにインライン化しないでください

-XincrementalFile file
(実験的)これはインクリメンタルモードのように機能しますが、ではなくファイルを使用します
コンパイラを制御するための標準入力。 ファイルが実行されるたびに再コンパイルされます
変更され、ファイルが削除されると停止します。

-XserializableAspects
(実験的)通常、アスペクトをシリアル化可能と宣言するのはエラーです。 これ
オプションはその制限を取り除きます。

-XnotReweavable
(実験的)AspectJによって後で再編することができないクラスファイルを作成します。

-Xajruntimelevel:1.2、ajruntimelevel:1.5
(実験的)1.2または1.5レベルを対象とするコードを生成できるようにします
AspectJランタイム(デフォルトは1.5)

File
ajcは、次のいずれかのソースファイルを受け入れます。 .Java 拡張機能または .aj 拡大。 私達
通常使用する .Java AspectJシステム内のすべてのファイル-アスペクトを含むファイル
クラスを含むファイルと同様に。 ただし、機械的にする必要がある場合
AspectJの追加機能を使用するファイルと純粋なファイルを区別する
Javaを使用することをお勧めします .aj それらのファイルの拡張子。

命名規則など、他の機械的な区別手段は使用しないでください。
またはサブパッケージを支持して .aj 拡大。

・ファイル名の規則を適用するのは難しく、アスペクトの名前がわかりにくいものになります。
の代わりに トレーシングアスペクト.java 使用をお勧めします トレース.aj (あるいは単に トレース.java)
を代わりにお使いください。

・サブパッケージは、システム内の自然な場所からアスペクトを移動し、
特権的な側面の人為的な必要性。 次のようなサブパッケージを追加する代わりに
側面 を使用することをお勧めします .aj 拡張子とこれらのファイルをあなたに含める
代わりに既存のパッケージ。

互換性
AspectJは、Javaプログラミング言語と互換性のある拡張機能です。 AspectJコンパイラ
に準拠します   Java 言語設定 仕様、 二番 エディション (本)
http://java.sun.com/docs/books/jls/index.html に適合しています   Java バーチャル エスプレッソマシン
仕様、 二番 エディション (本) http://java.sun.com/docs/books/vmspec/index.html &
Java2互換プラットフォームで実行されます。 生成されるコードは、任意のJava1.1または
後で互換性のあるプラットフォーム。 Javaおよびとの互換性の詳細については
AspectJの以前のリリース。を参照してください。 "" >.


A シンプルな

XNUMXつのファイルをコンパイルします。

ajc HelloWorld.java トレース.java

An -argfile / @

コマンドラインでファイル名を指定しないようにするには、ソースファイルを行区切りでリストします。
テキストargfile。 ソースファイルのパスは、絶対パスでもargfileからの相対パスでもかまいません。
@-referenceによって他のargfilesを含めます。 次のファイル ソース.lst 含まれています
絶対ファイルと相対ファイルおよび@参照:

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

-argfileまたは@形式のいずれかを使用してファイルをコンパイルします。

ajc -argfilesources.lst
ajc @ sources.lst

Argfilesはjikesとjavacでもサポートされているため、ハイブリッドビルドでファイルを使用できます。
ただし、サポートは異なります。

・ajcのみがコマンドラインオプションを受け入れます

・JikesとJavacは、内部の@argfile参照を受け入れません。

・JikesとJavacは、コマンドラインで@file形式のみを受け入れます。

An -インパス & -アスペクトパス

-inpathを使用したバイトコードウィービング:AspectJ 1.2は、入力zip/jarでの.classファイルのウィービングをサポートします
ファイルとディレクトリ。 入力jarの使用は、対応するソースファイルをコンパイルするようなものです。
そして、すべてのバイナリが出力に出力されます。 Java準拠のコンパイラは、
それらの出力、ajcは、javac、jikes、eclipse、によって生成されたクラスファイルを入力として受け取る必要があります。
そしてもちろん、ajc。 -inpathに含まれるアスペクトは、他の.classと同様に組み込まれます。
ファイル、およびそれらは通常どおり他のタイプに影響を与えます。

-aspectpathを使用したアスペクトライブラリ:AspectJ 1.1は、読み取り専用ライブラリからのウィービングをサポートします
アスペクトを含む。 入力jarと同様に、すべての入力に影響します。 入力jarとは異なり、それらは
それ自体は影響を受けたり、出力として出力されたりすることはありません。 アスペクトライブラリでコンパイルされたソース
クラスパスで同じアスペクトライブラリを使用して実行する必要があります。

次の例では、コマンドライン環境でトレース例を作成します。 それは作成します
読み取り専用のアスペクトライブラリであり、入力バイトコードとして使用するためにいくつかのクラスをコンパイルし、コンパイルします
アスペクトライブラリを備えたクラスおよびその他のソース。

トレースの例は、AspectJディストリビューション({aspectj} / doc / examples / traceing)にあります。 これ
次のファイルを使用します。

アスペクトj1.1/
置き場/
AJC
lib /
アスペクトjrt.jar
例/
トレース/
サークル.java
ExampleMain.java
lib /
抽象トレース.java
TraceMyClasses.java
notrace.lst
Square.java
トレースライブラリ.lst
トレースv3.lst
TwoDShape.java
version3 /
トレース.java
TraceMyClasses.java

以下では、パス区切り文字は「;」と見なされますが、ファイル区切り文字は「/」です。 すべてのコマンドは
一行で。 必要に応じて、環境へのパスとコマンドを調整します。

パス、クラスパス、および現在のディレクトリを設定します。

CDの例
エクスポートajrt=../ lib / aspectjrt.jar
CLASSPATH ="$ajrt"をエクスポートします
PATH="をエクスポートします。/ binに:$ PATH "

読み取り専用のトレースライブラリを構築します。

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

XNUMXつのステップでトレースを使用してアプリケーションを構築します。

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

トレースを使用してアプリケーションを実行します。

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

次のXNUMXつの手順で、バイナリからのトレースを使用してアプリケーションを構築します。

・(a)アプリケーションクラスを構築します(デモンストレーションのためにjavacを使用):

mkdirクラス
javac-dクラスtraceing/*.java
jar cfMapp.jar-Cクラス。

・(b)トレースを使用してアプリケーションをビルドします。

ajc -inpath app.jar -aspectpath tracklib.jar -outjar trackedapp.jar

トレースを使用してアプリケーションを実行します(上記と同じ)。

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

トレースせずにアプリケーションを実行します。

java -classpath "app.jar" trace.ExampleMain

  アスペクトJ コンパイラ API
AspectJコンパイラは完全にJavaで実装されており、Javaクラスとして呼び出すことができます。
パブリックと見なされるべき唯一のインターフェースは、
org.aspectj.tools.ajc.Main。 例えば、 main(String [] args) 標準を取ります AJC command
行引数。 これは、コンパイラを実行する別の方法が

ジャワ org.aspectj.tools.ajc.Main [オプション...] [ファイル...]

プログラムでコンパイラメッセージにアクセスするには、メソッドを使用します setHolder(IMessageHolder
保有者) および run(String [] args、 IMessageHolder 保有者). AJC 各メッセージをに報告します
ホルダー使用 IMessageHolder.handleMessage(..)。 メッセージを収集したいだけの場合は、
つかいます メッセージハンドラ あなたのように IMessageHolder。 たとえば、コンパイルして実行します
次のように アスペクトjtools.jar クラスパス上:

importorg.aspectj.bridge。*;
org.aspectj.tools.ajc.Main をインポートします。
java.util.Arraysをインポートします。

パブリッククラスWrapAjc{
公共の静的な無効メイン(文字列[] args){
メインコンパイラ=newMain();
MessageHandler m = new MessageHandler();
compiler.run(args、m);
IMessage [] ms = m.getMessages(null、true);
System.out.println( "メッセージ:" + Arrays.asList(MS));
}
}

スタック 形跡 &   ソースファイル 属性を使用する。
従来のJavaコンパイラとは異なり、AspectJコンパイラは特定の場合に生成する可能性があります
複数のソースファイルからのクラスファイル。 残念ながら、元のJavaクラスファイル形式
複数のSourceFile属性をサポートしていません。 すべてのソースファイルを確認するために
情報が利用可能である場合、AspectJコンパイラは場合によっては複数のファイル名をエンコードすることがあります
SourceFile属性で。 Java VMがスタックトレースを生成するとき、これを使用します
ソースファイルを指定する属性。

(AspectJ 1.0コンパイラは、JSR-45の.classファイル拡張子もサポートします。これらは
準拠したデバッガー(Java 1.4.1のjdbなど)が適切なファイルと行を識別できるようにする
単一のクラスに多くのソースファイルが与えられたとしても。 JSR-45のサポートはajcで計画されています
AspectJ 1.1ですが、初期リリースには含まれていません。 完全にデバッグ可能な.classファイルを取得するには、次を使用します。
-XnoInlineオプション。)

おそらく、この形式が表示されるのは、スタックトレースを表示するときだけです。
フォーマットの痕跡に遭遇する可能性があります

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

通常の代わりに

File:LineNumber

フォーマット、あなたが見る

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

この場合、LineNumberは、ラインの通常のオフセットに実際の「スタートライン」を加えたものです。
ソースファイル。 つまり、LineNumberを使用して、ソースファイルの識別と検索の両方を行います。
問題の行。 各ファイルの後の[括弧]内の数字は、仮想の「開始」を示しています
そのファイルの「行」(最初のファイルの先頭は0)。

ヌルポインタ例外トレースの例では、仮想スタートラインは1030です。
ファイルSynchAspect.javaは行1000[1k]で「開始」するため、LineNumberは行を指します
SynchAspect.javaの30。

したがって、このようなスタックトレースに直面した場合、実際のソースの場所を見つける方法は次のとおりです。
「スタートライン」番号のリストを調べて、表示されているラインのすぐ下にある番号を見つけます
番号。 これは、ソースの場所が実際に見つかるファイルです。 次に、減算します
その中の実際の行番号を見つけるために、表示された行番号からその「開始行」
ファイルにソフトウェアを指定する必要があります。

単一のソースファイルのみからのクラスファイルでは、AspectJコンパイラが生成します
従来のJavaコンパイラと一致するSourceFile属性。

AJC(1)

onworks.netサービスを使用してajcをオンラインで使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad