англійськафранцузькаіспанська

Ad


Значок OnWorks

ajc - Інтернет у хмарі

Запустіть ajc у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда ajc, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS

ПРОГРАМА:

ІМ'Я


ajc — компілятор і байт-код для мов AspectJ і Java

СИНТАКСИС


ajc [Опції] [файл ... | @файл ... | -argfile файл ... ]

Опис


Команда ajc команда компілює та об’єднує вихідні файли AspectJ і Java і .class, створюючи
Файли .class, сумісні з будь-якою віртуальною машиною Java (1.1 або новішої версії). Він поєднує в собі компіляцію та
переплетення байт-коду та підтримка інкрементних збірок; ви також можете переплітати байт-код під час виконання
використання "" >.

Аргументи після параметрів вказують вихідний(і) файл(и) для компіляції. Вказати джерело
класи, використ -inpath (нижче). Файли можуть бути перераховані безпосередньо в командному рядку або в a
файл. The -argfile файл та @файл форми еквівалентні і тлумачаться як значення
усі аргументи, перелічені у вказаному файлі.

Примітка: Ви повинні явно пройти ajc всі необхідні джерела. Обов’язково вкажіть джерело
не лише для аспектів або точок, але й для будь-яких типів, яких це стосується. Вказуючи всі
sources є необхідним, оскільки, на відміну від javac, ajc не шукає вихідний шлях
класи. (Для обговорення того, які уражені типи можуть знадобитися, див Команда АспектJ
Програмування Керівництво, Реалізація Додаток ../progguide/implementation.html) .

Щоб указати джерела, ви можете вказати вихідні файли як аргументи або скористатися параметрами -вихідні корені
or -inpath. Якщо є кілька джерел для будь-якого типу, результат є невизначеним, оскільки ajc
не має можливості визначити, яке джерело правильне. (Це найчастіше трапляється, коли користувачі
включити цільовий каталог у inpath і перебудувати.)

Опції
-injars JarList
застаріле: починаючи з 1.2, використовуйте -inpath, який також приймає каталоги.

-inpath Шлях
Приймайте як вихідний байт-код будь-які файли .class у вихідних даних
класи, можливо, як сплетені з будь-якими застосовними аспектами. Шлях єдиний
аргумент, що містить список шляхів до zip-файлів або каталогів, розділених
роздільник шляху для конкретної платформи.

-aspectpath Шлях
Переплітайте двійкові аспекти з jar-файлів і каталогів на шляху до всіх джерел.
Аспекти повинні були бути виведені тією ж версією компілятора. Коли
запускаючи вихідні класи, шлях до класу запуску повинен містити всі шляхи до аспектів
записи. Шлях, як і шлях до класу, є одним аргументом, що містить список шляхів
у файли jar, розділені спеціальним роздільником шляху до класу платформи.

-argfile філе
Файл містить розділений рядками список аргументів. Кожен рядок у файлі
має містити одну опцію, назву файлу або рядок аргументу (наприклад, шлях до класу або
вхідний шлях). Аргументи, прочитані з файлу, додаються до списку аргументів для
команда. Відносні шляхи у файлі обчислюються з каталогу
містить файл (не поточний робочий каталог). Коментарі, як і в Java,
починати з // і продовжити до кінця рядка. Параметри, указані в аргументі
файли можуть перевизначати, а не розширювати існуючі значення параметрів, тому уникайте
із зазначенням таких параметрів, як -класний шлях у файлах аргументів на відміну від
файл аргументів є єдиною специфікацією збірки. Форма @файл те саме, що
уточнюючи -argfile файл.

-outjar output.jar
Помістіть класи виводу в zip-файл output.jar.

-outxml Створити файл aop.xml для переплетення під час завантаження з назвою за замовчуванням.

-outxmlfile custom/aop.xml
Створіть файл aop.xml для переплетення під час завантаження з настроюваною назвою.

-поступовий
Безперервно запускайте компілятор. Після початкової компіляції компілятор буде
зачекайте, щоб перекомпілювати, поки він не прочитає новий рядок зі стандартного введення, і буде
вийти, коли він читає 'q'. Він лише перекомпілює необхідні компоненти, тому a
повторна компіляція має бути набагато швидшою, ніж друга компіляція. Це вимагає
-вихідні корені.

-вихідні корені DirPaths
Знайдіть і створіть усі вихідні файли .java або .aj у будь-якому каталозі, указаному в
DirPaths. DirPaths, як і classpath, є одним аргументом, що містить список
шляхи до каталогів, розділені спеціальним для платформи роздільником шляху до класу.
Потрібний для -incremental.

-перехресні посилання
Згенеруйте файл збірки .ajsym у вихідний каталог. Використовується для перегляду
наскрізні посилання за допомогою таких інструментів, як браузер AspectJ.

-emacssym Створити файли символів .ajesym для підтримки emacs (застаріле).

-Xlint Те саме, що -Xlint:попередження (увімкнено за замовчуванням)

-Xlint:{рівень}
Установіть рівень за замовчуванням для повідомлень про можливі помилки програмування в
наскрізний код. {level} може бути ігноруванням, попередженням або помилкою. Це перекриває
записи в org/aspectj/weaver/XlintDefault.properties з aspectjtools.jar, але
не перевизначає рівні, встановлені за допомогою параметра -Xlintfile.

-Xlintfile PropertyFile
Укажіть файл властивостей, щоб установити рівні для конкретних наскрізних повідомлень.
PropertyFile — це шлях до файлу Java .properties, який приймає ту саму властивість
імена та значення як org/aspectj/weaver/XlintDefault.properties from
aspectjtools.jar, який він також замінює.

-help Видавати інформацію про параметри компілятора та використання

-version Видає версію компілятора AspectJ

-класний шлях Шлях
Вкажіть, де шукати файли класів користувачів. Шлях — це один аргумент, що містить a
список шляхів до zip-файлів або каталогів, розділених платформою
роздільник шляху.

-bootclasspath Шлях
Перевизначте розташування шляху завантаження віртуальної машини з метою оцінки типів, коли
компіляція. Шлях — це один аргумент, що містить список шляхів до zip-файлів або
каталоги, розділені роздільником шляху для певної платформи.

-extdirs Шлях
Перевизначте розташування каталогів розширення віртуальної машини для цілей оцінки типів
при складанні. Шлях — це один аргумент, що містить список шляхів до
каталоги, розділені роздільником шляху для певної платформи.

-d Каталог
Укажіть, де розмістити згенеровані файли .class. Якщо не зазначено, Каталог
за умовчанням використовується поточний робочий каталог.

-ціль [1.1 до 1.5]
Укажіть цільовий параметр файлу класу (від 1.1 до 1.5, за замовчуванням 1.2)

-1.3 Встановіть рівень відповідності 1.3 Це означає -джерело 1.3 і -ціль 1.1.

-1.4 Встановити рівень відповідності 1.4 (за замовчуванням). Це означає -джерело 1.4 і -ціль 1.2.

-1.5 Встановити рівень відповідності 1.5. Це означає -джерело 1.5 і -ціль 1.5.

-Source [1.3|1.4|1.5]
Перемикати твердження (1.3, 1.4 або 1.5 - за замовчуванням 1.4). При використанні -source 1.3,
оператор assert(), дійсний під Java 1.4, призведе до помилки компілятора.
При використанні -source 1.4 лікуйте стверджувати як ключове слово та реалізувати твердження
відповідно до специфікації мови 1.4. При використанні -source 1.5, мова Java 5
функції дозволені.

-nowarn Не видавати попереджень (еквівалент '-warn:none') Це не пригнічує повідомлення
породжений декларувати попередження or Xlint.

- попередити: пунктів
Видавати попередження про будь-які випадки списку сумнівного коду, розділеного комами
(наприклад, '-warn:unusedLocals,deprecation'):

метод constructorName з іменем конструктора
packageDefaultMethod намагається перевизначити метод package-default
застаріле використання застарілого типу або члена
maskedCatchBlocks прихований блок catch
Локальна змінна unusedLocals ніколи не читається
аргумент методу unusedArguments ніколи не читається
Оператор імпорту unusedImports не використовується кодом у файлі
ніхто не пригнічує всі попередження компілятора

-попередити: немає не пригнічує повідомлення, створені декларувати попередження or Xlint.

- занепад
Те саме, що -warn:deprecation

-noImportError
Не видавати помилки для невирішених імпортів

-proceedOnError
Продовжуйте компілювати після помилки, видаляючи файли класів із проблемними методами

-g:[рядки,варіанти,джерело]
рівень атрибутів налагодження, який може мати три форми:

-g уся інформація про налагодження ('-g:lines,vars,source')
-g:none немає інформації про налагодження
-g:{items} інформація про налагодження будь-якого/всіх [рядків, змінних, джерела], наприклад,
-g:рядки,джерело

-preserveAllLocals
Зберігайте всі локальні змінні під час генерації коду (для полегшення налагодження).

-довідкова інформація
Обчислити довідкову інформацію.

-кодування формат
Укажіть стандартний формат кодування джерела. Укажіть спеціальне кодування для кожного файлу
основі, додавши до імені кожного файлу/папки джерела вхідних даних «[кодування]».

-verbose Видавати повідомлення про доступні/оброблені одиниці компіляції

-showWeaveInfo
Видавати повідомлення про плетіння

-лог файл Вкажіть файл журналу для повідомлень компілятора.

-progress Показати прогрес (потрібен режим -log).

-time Відображення інформації про швидкість.

-noExit Не викликати System.exit(n) наприкінці компіляції (n=0, якщо помилки немає)

-повторити N Повторіть процес компіляції N разів (зазвичай для аналізу продуктивності).

-XterminateAfterCompilation
Примушує компілятор завершувати роботу перед переплетенням

-XaddSerialVersionUID
Змушує компілятор обчислити та додати поле SerialVersionUID до будь-якого типу
реалізація Serializable, на яку впливає аспект. Поле є
розраховується на основі класу до початку плетіння.

-Xreweavable[:стиснути]
(Експериментальний – застаріле за замовчуванням) Запускає Weaver у режимі reweavable, який
змушує його створювати ткані класи, які можна переплести відповідно до
обмеження на спробу повторного переплетення всіх типів, які порадили виткати
тип має бути доступним.

-XnoInline
(Експериментальний) не вставляйте навколо поради

-XincrementalFile файл
(Експериментальний) Це працює як інкрементний режим, але використовує файл, а не
стандартний ввід для керування компілятором. Він буде перекомпілюватися кожного разу, коли файл буде
змінюється та зупиняється після видалення файлу.

-XserializableAspects
(Експериментальний) Зазвичай оголошення аспектів Serializable є помилкою. Це
параметр знімає це обмеження.

-XnotReweavable
(Експериментальний) Створення файлів класів, які не можуть бути згодом переплетені AspectJ.

-Xajruntimelevel:1.2, ajruntimelevel:1.5
(Експериментальний) Дозволяє генерувати код, націлений на рівень 1.2 або 1.5
Середовище виконання AspectJ (за замовчуванням 1.5)

філе Імена
ajc приймає вихідні файли з будь-яким .Java розширення або .aj розширення. ми
нормально використовувати .Java для всіх наших файлів у системі AspectJ -- файлів, які містять аспекти
а також файли, що містять класи. Однак, якщо у вас є необхідність механічно
відрізняти файли, які використовують додаткову функціональність AspectJ, від тих, які є чистими
Java ми рекомендуємо використовувати .aj розширення для цих файлів.

Ми хотіли б відмовитися від інших засобів механічного розрізнення, таких як домовленості про найменування
або підпакети на користь .aj розширення.

· Конвенції щодо імен файлів важко забезпечити, і вони призводять до незручних імен для ваших аспектів.
Замість TracingAspect.java ми рекомендуємо використовувати Tracing.aj (або просто Tracing.java)
замість цього.

· Підпакети переміщують аспекти з їх природного місця в системі та можуть створювати
штучна потреба в привілейованих аспектах. Замість додавання підпакета, як
аспекти ми рекомендуємо використовувати .aj розширення та включення цих файлів у ваш
натомість існуючі пакети.

Сумісність
AspectJ є сумісним розширенням мови програмування Java. Компілятор AspectJ
дотримується Команда Java Language Специфікація, другий видання (КНИГА)
http://java.sun.com/docs/books/jls/index.html і до Команда Java Віртуальний машина
специфікація, другий видання (КНИГА) http://java.sun.com/docs/books/vmspec/index.html та
працює на будь-якій платформі, сумісній з Java 2. Код, який він генерує, працює на будь-якій версії Java 1.1 або
пізніше сумісна платформа. Для отримання додаткової інформації про сумісність з Java і з
попередні випуски AspectJ див "" >.

прикладів
A простий приклад

Скомпілюйте два файли:

ajc HelloWorld.java Trace.java

An приклад використання -argfile/@

Щоб уникнути вказівки імен файлів у командному рядку, перелічуйте вихідні файли розділеними рядками
текстовий файл arg. Шлях до вихідного файлу може бути абсолютним або відносним до argfile, і може
включати інші файли arg за @-посиланням. Наступний файл джерела.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 -argfile sources.lst
ajc @sources.lst

Файли Arg також підтримуються jikes і javac, тому ви можете використовувати файли в гібридних збірках.
Однак підтримка різна:

· Тільки ajc приймає параметри командного рядка

· Jikes і Javac не приймають внутрішні посилання на @argfile.

· Jikes і Javac приймають лише форму @file у командному рядку.

An приклад використання -inpath та -aspectpath

Переплетення байт-коду за допомогою -inpath: AspectJ 1.2 підтримує переплетення файлів .class у вхідних zip/jar
файлів і каталогів. Використання вхідних файлів схоже на компіляцію відповідних вихідних файлів,
і всі двійкові файли виводяться на вихід. Хоча Java-сумісні компілятори можуть відрізнятися
їхній вихід, ajc має приймати як вхідні файли класів, створені javac, jikes, eclipse,
і, звичайно, ajc. Аспекти, включені в -inpath, будуть вплетені в інший .class
файли, і вони, як зазвичай, впливатимуть на інші типи.

Бібліотеки аспектів, що використовують -aspectpath: AspectJ 1.1 підтримує плетіння з бібліотек лише для читання
що містить аспекти. Як і банки введення, вони впливають на всі введення; на відміну від вхідних банок, вони
самі по собі не впливають і не випромінюються як вихід. Вихідні коди зібрані за допомогою бібліотек аспектів
повинні запускатися з тими самими бібліотеками аспектів на шляху до класів.

У наступному прикладі створюється приклад трасування в середовищі командного рядка; воно створює
бібліотека аспектів лише для читання, компілює деякі класи для використання в якості вхідного байт-коду та компілює
класи та інші джерела з бібліотекою аспектів.

Приклад трасування міститься в дистрибутиві AspectJ ({aspectj}/doc/examples/tracing). Це
використовує такі файли:

aspectj1.1/
смітник /
ajc
Бібліотека /
aspectjrt.jar
приклади/
трасування/
Circle.java
ExampleMain.java
Бібліотека /
AbstractTrace.java
TraceMyClasses.java
notrace.lst
Square.java
tracelib.lst
tracev3.lst
TwoDShape.java
версія3/
Trace.java
TraceMyClasses.java

Нижче роздільником шляху є ";", а роздільниками файлів є "/". Всі команди є
на одній лінії. За потреби налаштуйте шляхи та команди до свого середовища.

Налаштуйте шлях, шлях до класу та поточний каталог:

приклади компакт-дисків
експорт ajrt=../lib/aspectjrt.jar
експорт CLASSPATH="$ajrt"
експорт PATH="../ bin:$PATH"

Створіть бібліотеку трасування лише для читання:

ajc -argfile трасування/tracelib.lst -outjar tracelib.jar

Створіть додаток із трасуванням за один крок:

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

Запустіть програму з трасуванням:

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" трасування.ExampleMain

Створіть програму з трасуванням із двійкових файлів у два кроки:

· (a) Створіть класи додатків (використовуючи javac для демонстрації):

класи mkdir
javac -d трасування класів/*.java
jar cfM app.jar -C класи.

· (b) Створення програми з трасуванням:

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

Запустіть програму з трасуванням (так само, як вище):

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" трасування.ExampleMain

Запустіть програму без трасування:

java -classpath "app.jar" tracing.ExampleMain

Команда АспектJ компілятор API
Компілятор AspectJ повністю реалізований на Java і може бути викликаний як клас Java.
Єдиний інтерфейс, який слід вважати загальнодоступним, це публічні методи
org.aspectj.tools.ajc.Main. Наприклад, main(String[] аргументи) приймає стандарт ajc команда
рядкові аргументи. Це означає, що альтернативним способом запуску компілятора є

Ява org.aspectj.tools.ajc.Main [варіант ...] [файл ...]

Щоб програмно отримати доступ до повідомлень компілятора, використовуйте методи setHolder(IMessageHolder
тримач) та / або run(String[] аргументи, IMessageHolder тримач). ajc повідомляє про кожне повідомлення
використання тримача IMessageHolder.handleMessage(..). Якщо ви просто хочете збирати повідомлення,
використання MessageHandler як ваш IMessageHolder. Наприклад, скомпілюйте та запустіть
слідуючи с aspectjtools.jar на шляху класу:

імпорт org.aspectj.bridge.*;
імпорт org.aspectj.tools.ajc.Main;
імпортувати java.util.Arrays;

публічний клас WrapAjc {
public static void main (String [] args) {
Основний компілятор = new Main();
MessageHandler m = новий MessageHandler();
compiler.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("повідомлення: " + Arrays.asList(РС));
}
}

Стек Сліди та Вихідний файл атрибут
На відміну від традиційних компіляторів Java, компілятор AspectJ у певних випадках може генерувати
класи з кількох вихідних файлів. На жаль, оригінальний формат файлу класу Java
не підтримує кілька атрибутів SourceFile. Щоб переконатися, що всі вихідні файли
інформація доступна, компілятор AspectJ може в деяких випадках кодувати декілька імен файлів
в атрибуті SourceFile. Коли Java VM генерує трасування стека, вона використовує це
атрибут для визначення вихідного файлу.

(Компілятор AspectJ 1.0 також підтримує розширення файлів .class JSR-45. Ці
дозволити сумісним налагоджувачам (таким як jdb у Java 1.4.1) ідентифікувати правильний файл і рядок
навіть з урахуванням багатьох вихідних файлів для одного класу. Підтримка JSR-45 планується для ajc в
AspectJ 1.1, але його немає в початковій версії. Щоб отримати повністю налагоджувані файли .class, використовуйте
параметр -XnoInline.)

Ймовірно, єдиний раз, коли ви можете побачити цей формат, це коли ви переглядаєте трасування стека, де ви
можуть виявитися сліди формату

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

де замість звичайних

Файл:Номер рядка

формат, бачите

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

У цьому випадку LineNumber є звичайним зміщенням у рядках плюс «рядок початку» фактичного
вихідний файл. Це означає, що ви використовуєте LineNumber як для ідентифікації вихідного файлу, так і для пошуку
спірний рядок. Число в [дужках] після кожного файлу говорить вам про віртуальний "початок
рядок" для цього файлу (перший файл має початок з 0).

У нашому прикладі з трасування винятків нульового покажчика віртуальний початковий рядок становить 1030.
Оскільки файл SynchAspect.java «починається» з рядка 1000 [1k], LineNumber вказує на рядок
30 із SynchAspect.java.

Отже, стикаючись із такими трасами стека, спосіб знайти фактичне розташування джерела полягає в тому, щоб
перегляньте список номерів «початкової лінії», щоб знайти той, який знаходиться прямо під показаним рядком
номер. Це файл, у якому насправді можна знайти вихідне розташування. Потім відніміть
цей «початковий рядок» із показаного номера рядка, щоб знайти фактичний номер рядка в ньому
файлу.

У файлі класу, який походить лише з одного вихідного файлу, компілятор AspectJ генерує
Атрибути SourceFile відповідають традиційним компіляторам Java.

ajc(1)

Використовуйте ajc онлайн за допомогою сервісів onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad