InggrisPerancisSpanyol

Ad


favorit OnWorks

ajc - Daring di Awan

Jalankan ajc di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah ajc yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


ajc — compiler dan bytecode weaver untuk bahasa AspectJ dan Java

RINGKASAN


ajc [Opsi] [mengajukan... | @mengajukan... | -argfile mengajukan... ]

Deskripsi Produk


Grafik ajc perintah mengkompilasi dan menjalin AspectJ dan sumber Java dan file .class, menghasilkan
file .class yang sesuai dengan Java VM (1.1 atau yang lebih baru). Ini menggabungkan kompilasi dan
bytecode menenun dan mendukung pembangunan tambahan; anda juga dapat menenun bytecode saat run-time
menggunakan "" >.

Argumen setelah opsi menentukan file sumber untuk dikompilasi. Untuk menentukan sumber
kelas, gunakan -jalan masuk (di bawah). File dapat dicantumkan langsung di baris perintah atau di a
mengajukan. Itu -argfile fillet dan @fillet bentuk-bentuk itu setara, dan ditafsirkan sebagai makna
semua argumen yang tercantum dalam file yang ditentukan.

Catatan: Anda harus secara eksplisit lulus ajc semua sumber yang diperlukan. Pastikan untuk menyertakan sumbernya
tidak hanya untuk aspek atau pointcuts tetapi juga untuk semua jenis yang terpengaruh. Menentukan semua
sumber diperlukan karena, tidak seperti javac, ajc tidak mencari jalur sumber untuk
kelas. (Untuk diskusi tentang jenis yang terpengaruh mungkin diperlukan, lihat Grafik AspekJ
Pemrograman Panduan, Organisasi Lampiran ../progguide/implementasi.html) .

Untuk menentukan sumber, Anda dapat mencantumkan file sumber sebagai argumen atau menggunakan opsi -sumber akar
or -jalan masuk. Jika ada banyak sumber untuk jenis apa pun, hasilnya tidak ditentukan karena ajc
tidak memiliki cara untuk menentukan sumber mana yang benar. (Ini paling sering terjadi ketika pengguna
sertakan direktori tujuan di jalur masuk dan bangun kembali.)

Opsi
-injar Daftar Toples
usang: sejak 1.2, gunakan -inpath, yang juga mengambil direktori.

-jalan masuk xtra
Terima sebagai bytecode sumber file .class apa pun di Output akan menyertakan ini
kelas, mungkin sebagai tenunan dengan aspek yang berlaku. Jalan adalah satu
argumen yang berisi daftar jalur ke file atau direktori zip, dibatasi oleh
pembatas jalur khusus platform.

-jalur aspek xtra
Menenun aspek biner dari file jar dan direktori di jalur ke semua sumber.
Aspek-aspek tersebut seharusnya dikeluarkan oleh versi kompiler yang sama. Kapan
menjalankan kelas output, classpath yang dijalankan harus berisi semua aspekpath
entri. Path, seperti classpath, adalah argumen tunggal yang berisi daftar path
ke file jar, dibatasi oleh pembatas classpath khusus platform.

-argfile File
File berisi daftar argumen yang dibatasi baris. Setiap baris dalam file
harus berisi satu opsi, nama file, atau string argumen (mis., jalur kelas atau
jalan masuk). Argumen yang dibaca dari file dimasukkan ke dalam daftar argumen untuk
perintah. Jalur relatif dalam file dihitung dari direktori
berisi file (bukan direktori kerja saat ini). Komentar, seperti di Jawa,
dimulai dari // dan meluas ke akhir baris. Opsi yang ditentukan dalam argumen
file mungkin menimpa daripada memperluas nilai opsi yang ada, jadi hindari
menentukan opsi seperti -jalur kelas dalam file argumen tidak seperti
file argumen adalah satu-satunya spesifikasi build. Formulir @mengajukan sama dengan
menentukan -argfile fillet.

-keluarjar keluaran.jar
Masukkan kelas output dalam file zip output.jar.

-outxml Hasilkan file aop.xml untuk menenun waktu muat dengan nama default.

-file keluaranxml kustom/aop.xml
Hasilkan file aop.xml untuk menenun waktu muat dengan nama khusus.

-tambahan
Jalankan kompiler terus menerus. Setelah kompilasi awal, kompiler akan
tunggu untuk mengkompilasi ulang sampai membaca baris baru dari input standar, dan akan
berhenti ketika membaca 'q'. Itu hanya akan mengkompilasi ulang komponen yang diperlukan, jadi a
kompilasi ulang harus jauh lebih cepat daripada melakukan kompilasi kedua. Ini membutuhkan
-sumber akar.

-sumber akar DirPath
Temukan dan buat semua file sumber .java atau .aj di bawah direktori mana pun yang terdaftar di
DirPaths. DirPaths, seperti classpath, adalah argumen tunggal yang berisi daftar
path ke direktori, dibatasi oleh pembatas classpath khusus platform.
Diperlukan oleh -incremental.

-referensi silang
Buat file build .ajsym ke dalam direktori keluaran. Digunakan untuk melihat
referensi lintas sektor dengan alat seperti AspectJ Browser.

-emacssym Menghasilkan file simbol .ajesym untuk dukungan emacs (tidak digunakan lagi).

-Xlint Sama seperti -Xlint:warning (diaktifkan secara default)

-Xlint:{tingkat}
Tetapkan level default untuk pesan tentang potensi kesalahan pemrograman di
kode lintas sektor. {level} mungkin diabaikan, peringatan, atau kesalahan. Ini menimpa
entri di org/aspectj/weaver/XlintDefault.properties dari aspekjtools.jar, tetapi
tidak mengesampingkan level yang disetel menggunakan opsi -Xlintfile.

-Xlintfile File Properti
Tentukan file properti untuk mengatur level untuk pesan lintas sektoral tertentu.
PropertyFile adalah jalur ke file Java .properties yang menggunakan properti yang sama
nama dan nilai sebagai org/aspectj/weaver/XlintDefault.properties dari
aspekjtools.jar, yang juga ditimpa.

-help Memancarkan informasi tentang opsi dan penggunaan kompiler

-versi Keluarkan versi kompiler AspectJ

-jalur kelas xtra
Tentukan di mana menemukan file kelas pengguna. Path adalah argumen tunggal yang mengandung
daftar jalur ke file atau direktori zip, dibatasi oleh platform khusus
pembatas jalan.

- jalur kelas boot xtra
Ganti lokasi bootclasspath VM untuk tujuan mengevaluasi tipe ketika
kompilasi. Path adalah argumen tunggal yang berisi daftar path ke file zip atau
direktori, dibatasi oleh pembatas jalur khusus platform.

-extdir xtra
Ganti lokasi direktori ekstensi VM untuk tujuan mengevaluasi jenis
saat menyusun. Path adalah argumen tunggal yang berisi daftar path ke
direktori, dibatasi oleh pembatas jalur khusus platform.

-d Direktori
Tentukan tempat untuk menempatkan file .class yang dihasilkan. Jika tidak ditentukan, Direktori
default ke dir kerja saat ini.

-target [1.1 untuk 1.5]
Tentukan pengaturan target classfile (1.1 hingga 1.5, default adalah 1.2)

-1.3 Tetapkan tingkat kepatuhan ke 1.3 Ini menyiratkan -sumber 1.3 dan -target 1.1.

-1.4 Setel tingkat kepatuhan ke 1.4 (default) Ini menyiratkan -sumber 1.4 dan -target 1.2.

-1.5 Setel tingkat kepatuhan ke 1.5. Ini menyiratkan -sumber 1.5 dan -target 1.5.

-source [1.3|1.4|1.5]
Alihkan pernyataan (1.3, 1.4, atau 1.5 - defaultnya adalah 1.4). Saat menggunakan -sumber 1.3,
pernyataan assert() yang valid di bawah Java 1.4 akan menghasilkan kesalahan kompiler.
Saat menggunakan -source 1.4, perlakukan menegaskan sebagai kata kunci dan menerapkan pernyataan
sesuai dengan spesifikasi bahasa 1.4. Saat menggunakan -source 1.5, bahasa Java 5
fitur diizinkan.

-nowarn Emit no warnings (setara dengan '-warn:none') Ini tidak menekan pesan
dihasilkan oleh menyatakan peringatan or Xlint.

-memperingatkan: item
Keluarkan peringatan untuk setiap contoh daftar kode yang dipertanyakan yang dipisahkan koma
(misalnya '-warn:unusedLocals,deprecation'):

metode constructorName dengan nama konstruktor
packageDefaultMethod mencoba untuk mengganti metode paket-default
penghentian penggunaan tipe atau anggota yang tidak digunakan lagi
maskedCatchBlocks blok tangkapan tersembunyi
variabel lokal yang tidak digunakan tidak pernah dibaca
argumen metode unusedArguments tidak pernah dibaca
pernyataan impor unusedImports tidak digunakan oleh kode dalam file
tidak ada yang menekan semua peringatan kompiler

-peringatkan: tidak ada tidak menekan pesan yang dihasilkan oleh menyatakan peringatan or Xlint.

-bantahan
Sama seperti -warn:deprecation

-tidak ada Kesalahan Impor
Tidak ada kesalahan untuk impor yang belum terselesaikan

-melanjutkanKesalahan
Tetap kompilasi setelah kesalahan, membuang file kelas dengan metode masalah

-g:[baris,vars,sumber]
tingkat atribut debug, yang dapat mengambil tiga bentuk:

-g semua info debug ('-g:lines,vars,source')
-g: tidak ada, tidak ada info debug
-g:{items} debug info untuk setiap/semua [baris, vars, sumber], misalnya,
-g:baris,sumber

-pertahankanSemua Penduduk Lokal
Pertahankan semua variabel lokal selama pembuatan kode (untuk memfasilitasi debugging).

-referensiInfo
Menghitung informasi referensi.

-pengkodean format
Tentukan format penyandian sumber default. Tentukan pengkodean khusus pada per file
dasar dengan menambahkan setiap nama file/folder sumber input dengan '[encoding]'.

-verbose Memancarkan pesan tentang unit kompilasi yang diakses/diproses

-tunjukkanInfo Weave
Pancarkan pesan tentang menenun

-catatan fillet Tentukan file log untuk pesan compiler.

-progress Tampilkan kemajuan (memerlukan mode -log).

-waktu Menampilkan informasi kecepatan.

-noExit Jangan panggil System.exit(n) di akhir kompilasi (n=0 jika tidak ada kesalahan)

-mengulang N Ulangi proses kompilasi N kali (biasanya untuk melakukan analisis kinerja).

-XterminateAfterCompilation
Menyebabkan kompiler berhenti sebelum menenun

-XaddSerialVersionUID
Menyebabkan kompiler menghitung dan menambahkan bidang SerialVersionUID ke tipe apa pun
mengimplementasikan Serializable yang dipengaruhi oleh suatu aspek. lapangan adalah
dihitung berdasarkan kelas sebelum menenun berlangsung.

-Xreweavable[:kompres]
(Eksperimental - tidak digunakan lagi sebagai default sekarang) Menjalankan weaver dalam mode reweavable yang
menyebabkannya membuat kelas tenunan yang dapat ditenun kembali, tunduk pada
pembatasan bahwa pada mencoba menenun ulang semua jenis yang disarankan tenun
jenis harus dapat diakses.

-XnoInline
(Eksperimental) jangan sebaris dengan saran

-File Tambahan Xin fillet
(Eksperimental) Ini berfungsi seperti mode tambahan, tetapi menggunakan file daripada
input standar untuk mengontrol compiler. Ini akan mengkompilasi ulang setiap kali file
berubah dan dan berhenti ketika file dihapus.

-XserializableAspek
(Eksperimental) Biasanya merupakan kesalahan untuk mendeklarasikan aspek Serializable. Ini
opsi menghapus batasan itu.

-XnotReweavable
(Eksperimental) Buat file kelas yang selanjutnya tidak dapat dirajut ulang oleh AspectJ.

-Xajruntimelevel:1.2,jruntimelevel:1.5
(Eksperimental) Memungkinkan kode dihasilkan yang menargetkan level 1.2 atau 1.5
Waktu proses AspectJ (default 1.5)

File nama
ajc menerima file sumber dengan salah satu dari .Jawa ekstensi atau .aj perpanjangan. Kita
biasanya digunakan .Jawa untuk semua file kami dalam sistem AspectJ -- file yang berisi aspek
serta file yang berisi kelas. Namun, jika Anda memiliki kebutuhan untuk secara mekanis
membedakan file yang menggunakan fungsionalitas tambahan AspectJ dari yang murni
Java kami sarankan menggunakan .aj ekstensi untuk file-file itu.

Kami ingin mencegah cara pembedaan mekanis lainnya seperti konvensi penamaan
atau sub-paket yang mendukung .aj perpanjangan.

· Konvensi nama file sulit untuk ditegakkan dan menyebabkan nama yang canggung untuk aspek Anda.
Dari pada TracingAspect.java kami sarankan menggunakan Menelusuri.aj (atau hanya Menelusuri.java)
sebagai gantinya.

· Sub-paket memindahkan aspek keluar dari tempat alami mereka dalam suatu sistem dan dapat membuat
kebutuhan artifisial akan aspek-aspek istimewa. Alih-alih menambahkan sub-paket seperti
aspek kami sarankan menggunakan .aj ekstensi dan menyertakan file-file ini di
paket yang ada sebagai gantinya.

kecocokan
AspectJ adalah ekstensi yang kompatibel dengan bahasa pemrograman Java. Kompiler AspectJ
menganut Grafik Jawa Bahasa spesifikasi, Kedua Edisi (BUKU)
http://java.sun.com/docs/books/jls/index.html dan untuk Grafik Jawa maya Mesin
Spesifikasi, Kedua Edisi (BUKU) http://java.sun.com/docs/books/vmspec/index.html dan
berjalan pada platform yang kompatibel dengan Java 2. Kode yang dihasilkannya berjalan pada Java 1.1 atau
platform yang kompatibel kemudian. Untuk informasi lebih lanjut tentang kompatibilitas dengan Java dan dengan
rilis sebelumnya dari AspectJ, lihat "" >.

contoh
A sederhana contoh

Kompilasi dua file:

ajc HelloWorld.java Jejak.java

An contoh menggunakan -argfile/@

Untuk menghindari menentukan nama file pada baris perintah, daftarkan file sumber dalam baris yang dibatasi
teks argfile. Jalur file sumber mungkin absolut atau relatif terhadap argfile, dan mungkin
sertakan file arg lainnya dengan @-reference. File berikut sumber.lst mengandung
file absolut dan relatif dan @-referensi:

Gui.java
/home/pengguna/src/Library.java
data/Repositori.java
data/Access.java
@../../common/common.lst
@/rumah/pengguna/src/lib.lst
lihat/tubuh/ArrayView.java

Kompilasi file menggunakan formulir -argfile atau @:

ajc -argfile sumber.lst
ajc @ sumber.lst

Argfiles juga didukung oleh jikes dan javac, sehingga Anda dapat menggunakan file dalam build hybrid.
Namun, dukungannya bervariasi:

· Hanya ajc yang menerima opsi baris perintah

· Jikes dan Javac tidak menerima referensi @argfile internal.

· Jikes dan Javac hanya menerima formulir @file pada baris perintah.

An contoh menggunakan -jalan masuk dan -jalur aspek

Menenun bytecode menggunakan -inpath: AspectJ 1.2 mendukung menenun file .class di zip/jar input
file dan direktori. Menggunakan stoples input seperti mengkompilasi file sumber yang sesuai,
dan semua binari dipancarkan ke output. Meskipun compiler Java-compliant mungkin berbeda dalam
outputnya, ajc harus mengambil sebagai input file kelas apa pun yang dihasilkan oleh javac, jikes, Eclipse,
dan, tentu saja, jc. Aspek yang termasuk dalam -inpath akan dijalin menjadi seperti .class lainnya
file, dan mereka akan mempengaruhi jenis lain seperti biasa.

Pustaka aspek menggunakan -aspectpath: AspectJ 1.1 mendukung tenun dari pustaka hanya-baca
mengandung aspek. Seperti stoples masukan, mereka mempengaruhi semua masukan; tidak seperti stoples masukan, mereka
sendiri tidak terpengaruh atau dipancarkan sebagai output. Sumber dikompilasi dengan pustaka aspek
harus dijalankan dengan pustaka aspek yang sama di classpath mereka.

Contoh berikut membangun contoh pelacakan di lingkungan baris perintah; itu menciptakan
perpustakaan aspek hanya-baca, mengkompilasi beberapa kelas untuk digunakan sebagai bytecode input, dan mengkompilasi
kelas dan sumber lain dengan perpustakaan aspek.

Contoh penelusuran ada di distribusi AspectJ ({aspectj}/doc/examples/tracing). Ini
menggunakan file berikut:

aspekj1.1/
tempat sampah/
ajc
lib /
aspekjrt.jar
contoh/
pelacakan/
lingkaran.java
ContohMain.java
lib /
AbstrakJejak.java
TraceMyClasses.java
notrace.lst
kotak.java
tracelib.lst
jejakv3.lst
TwoDShape.java
versi3/
jejak.java
TraceMyClasses.java

Di bawah ini, pemisah jalur diambil sebagai ";", tetapi pemisah file adalah "/". Semua perintah adalah
pada satu baris. Sesuaikan jalur dan perintah ke lingkungan Anda sesuai kebutuhan.

Siapkan jalur, jalur kelas, dan direktori saat ini:

contoh cd
ekspor ajrt=../lib/aspectjrt.jar
ekspor CLASSPATH="$ajrt"
ekspor PATH="../tempat sampah:$PATH"

Buat pustaka penelusuran hanya-baca:

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

Bangun aplikasi dengan penelusuran dalam satu langkah:

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

Jalankan aplikasi dengan penelusuran:

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

Bangun aplikasi dengan penelusuran dari binari dalam dua langkah:

· (a) Bangun kelas aplikasi (menggunakan javac untuk demonstrasi):

kelas mkdir
javac -d kelas melacak/*.java
jar cfM app.jar -C kelas .

· (b) Membangun aplikasi dengan tracing:

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

Jalankan aplikasi dengan tracing (sama seperti diatas):

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

Jalankan aplikasi tanpa menelusuri:

java -classpath "app.jar" tracing.Contoh Utama

Grafik AspekJ penyusun API
Kompiler AspectJ diimplementasikan sepenuhnya di Java dan dapat disebut sebagai kelas Java.
Satu-satunya antarmuka yang harus dianggap publik adalah metode publik di
org.aspectj.tools.ajc.Utama. Misalnya, utama(String[] argumen) mengambil standar ajc Command
argumen garis. Ini berarti bahwa cara alternatif untuk menjalankan kompiler adalah

Jawa org.aspectj.tools.ajc.Utama [pilihan...] [mengajukan...]

Untuk mengakses pesan kompiler secara terprogram, gunakan metode setHolder(IMessageHolder
pemegang) dan / atau jalankan(String[] argumen, pemegang pesan pemegang). ajc melaporkan setiap pesan ke
pemegang menggunakan IMessageHolder.handleMessage(..). Jika Anda hanya ingin mengumpulkan pesan,
menggunakan penangan pesan sebagai milikmu pemegang pesan. Misalnya, kompilasi dan jalankan file
mengikuti dengan aspekjtools.jar di jalur kelas:

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

kelas publik WrapAjc {
public static void main (String [] args) {
Kompiler utama = Main baru();
MessageHandler m = MessageHandler baru();
compiler.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("pesan: " + Array.asList(MS));
}
}

Tumpukan Jejak dan itu Sumber data atribut
Tidak seperti kompiler java tradisional, kompiler AspectJ dalam kasus tertentu dapat menghasilkan
classfiles dari beberapa file sumber. Sayangnya, format file kelas Java asli
tidak mendukung beberapa atribut SourceFile. Untuk memastikan semua file sumber
informasi tersedia, kompiler AspectJ dalam beberapa kasus dapat mengkodekan banyak nama file
di atribut SourceFile. Ketika Java VM menghasilkan jejak tumpukan, ia menggunakan ini
atribut untuk menentukan file sumber.

(Compiler AspectJ 1.0 juga mendukung ekstensi file .class dari JSR-45. Ini
mengizinkan debugger yang sesuai (seperti jdb di Java 1.4.1) untuk mengidentifikasi file dan baris yang tepat
bahkan diberikan banyak file sumber untuk satu kelas. Dukungan JSR-45 direncanakan untuk ajc in
AspectJ 1.1, tetapi tidak dalam rilis awal. Untuk mendapatkan file .class yang sepenuhnya dapat di-debug, gunakan
opsi -XnoInline.)

Mungkin satu-satunya waktu Anda mungkin melihat format ini adalah ketika Anda melihat jejak tumpukan, di mana Anda
mungkin menemukan jejak format

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

dimana bukan seperti biasanya

File:Nomor Baris

formatnya, Anda lihat

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

Dalam hal ini, LineNumber adalah offset biasa dalam baris ditambah "garis awal" dari yang sebenarnya
sumber data. Itu berarti Anda menggunakan LineNumber untuk mengidentifikasi file sumber dan untuk menemukan
garis yang dipermasalahkan. Nomor dalam [kurung] setelah setiap file memberi tahu Anda "mulai" virtual
line" untuk file itu (file pertama memiliki awalan 0).

Dalam contoh kami dari jejak pengecualian penunjuk nol, garis mulai virtual adalah 1030.
Karena file SynchAspect.java "dimulai" pada baris 1000 [1k], LineNumber menunjuk ke baris
30 dari SynchAspect.java.

Jadi, ketika dihadapkan dengan jejak tumpukan seperti itu, cara untuk menemukan lokasi sumber sebenarnya adalah dengan
lihat daftar nomor "garis awal" untuk menemukan yang tepat di bawah garis yang ditunjukkan
nomor. Itu adalah file di mana lokasi sumber sebenarnya dapat ditemukan. Kemudian, kurangi
bahwa "garis awal" dari nomor baris yang ditampilkan untuk menemukan nomor baris yang sebenarnya di dalamnya
file.

Dalam file kelas yang hanya berasal dari satu file sumber, kompiler AspectJ menghasilkan
Atribut SourceFile konsisten dengan compiler Java tradisional.

ajc(1)

Gunakan ajc online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad