АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

ajc - Интернет в облаке

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

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

ПРОГРАММА:

ИМЯ


ajc - компилятор и ткач байт-кода для языков AspectJ и Java

СИНТАКСИС


АЕК [Опции] [файл ... | @файл ... | -argfile файл ... ]

Описание


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

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

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

Чтобы указать источники, вы можете указать исходные файлы в качестве аргументов или использовать параметры -исходные корни
or -в пути. Если существует несколько источников для любого типа, результат не определен, поскольку ajc
не имеет возможности определить, какой источник правильный. (Это чаще всего происходит, когда пользователи
включить целевой каталог во inpath и перестроить.)

Опции
-инъяры Джарлист
устарело: начиная с версии 1.2 используйте -inpath, который также принимает каталоги.

-в пути Path
Примите в качестве исходного байт-кода любые файлы .class в выводе, которые будут включать эти
классы, возможно, сплетенные с любыми применимыми аспектами. Путь единый
аргумент, содержащий список путей к zip-файлам или каталогам, разделенный
разделитель пути, зависящий от платформы.

-аспектный путь Path
Плетение двоичных аспектов из файлов jar и каталогов на пути во все источники.
Аспекты должны выводиться одной и той же версией компилятора. Когда
при запуске выходных классов путь к классам запуска должен содержать весь аспектный путь
записи. Путь, как и путь к классам, - это единственный аргумент, содержащий список путей
в файлы jar, разделенные разделителем пути к классам, зависящим от платформы.

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

-вне банка вывод.jar
Поместите выходные классы в zip-файл output.jar.

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

-outxmlфайл обычай / aop.xml
Создайте файл aop.xml для ткачества во время загрузки с пользовательским именем.

-инкрементальный
Постоянно запускайте компилятор. После первоначальной компиляции компилятор
дождитесь перекомпиляции, пока он не прочитает новую строку из стандартного ввода, и будет
выйти, когда он читает «q». Он будет перекомпилировать только необходимые компоненты, поэтому
перекомпиляция должна быть намного быстрее, чем повторная компиляция. Это требует
-исходные корни.

-исходные корни пути пути
Найдите и создайте все исходные файлы .java или .aj в любом каталоге, указанном в
DirPaths. DirPaths, как и путь к классам, представляет собой единственный аргумент, содержащий список
пути к каталогам, разделенные разделителем пути к классам, зависящим от платформы.
Требуется -incremental.

-перекрестные ссылки
Сгенерируйте файл сборки .ajsym в выходной каталог. Используется для просмотра
перекрестные ссылки с помощью таких инструментов, как браузер AspectJ.

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

-Xlint То же, что -Xlint: предупреждение (по умолчанию включено)

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

-Xlintfile Файл свойств
Укажите файл свойств, чтобы установить уровни для конкретных пересекающихся сообщений.
PropertyFile - это путь к файлу Java .properties, который принимает то же свойство.
имена и значения как org / aspectj / weaver / XlintDefault.properties из
аспектjtools.jar, который он также переопределяет.

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

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

- путь к классам Path
Укажите, где найти файлы классов пользователей. Путь - это единственный аргумент, содержащий
список путей к zip-файлам или каталогам с разделителями, зависящими от платформы
разделитель пути.

-bootclasspath Path
Переопределить расположение пути к загрузочному классу виртуальной машины для оценки типов, когда
компиляция. Путь - это единственный аргумент, содержащий список путей к zip-файлам или
каталоги, разделенные ограничителем пути, зависящим от платформы.

-extdirs Path
Переопределить расположение каталогов расширений виртуальной машины для оценки типов
при компиляции. Путь - это единственный аргумент, содержащий список путей к
каталоги, разделенные ограничителем пути, зависящим от платформы.

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

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

-1.3 Установите уровень соответствия 1.3. Это подразумевает -source 1.3 и -target 1.1.

-1.4 Установите уровень соответствия 1.4 (по умолчанию). Это подразумевает -source 1.4 и -target 1.2.

-1.5 Установите уровень соответствия 1.5. Это подразумевает -source 1.5 и -target 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 Кслинт.

-предупреждать: пункты
Создавать предупреждения для любых экземпляров списка сомнительного кода, разделенного запятыми.
(например, '-warn: unusedLocals, устаревание'):

constructorName метод с именем конструктора
packageDefaultMethod пытается переопределить метод пакета по умолчанию
устаревшее использование устаревшего типа или члена
maskedCatchBlocks скрытый блок перехвата
unusedLocals локальная переменная никогда не читается
Аргумент метода unusedArguments никогда не читается
Оператор импорта unusedImports не используется кодом в файле
никто не подавляет все предупреждения компилятора

-warn: нет не подавляет сообщения, генерируемые объявлять предупреждение or Кслинт.

- устаревание
То же, что и -warn: устаревание

-ноимпортеррор
Не выдавать ошибок при неразрешенном импорте

-ProceedOnError
Продолжайте компилировать после ошибки, сбрасывая файлы классов с помощью проблемных методов

-g: [строки, переменные, исходный код]
уровень атрибутов отладки, который может принимать три формы:

-g вся отладочная информация ('-g: строки, переменные, источник')
-g: нет никакой отладочной информации
-g: {items} отладочная информация для любых / всех [строк, переменных, источника], например,
-g: строки, исходный код

-preserveAllLocals
Сохраните все локальные переменные во время генерации кода (для облегчения отладки).

-referenceInfo
Вычислить справочную информацию.

-кодирование формат
Укажите исходный формат кодировки по умолчанию. Укажите пользовательскую кодировку для каждого файла
путем добавления суффикса к имени каждого исходного файла / папки с помощью суффикса «[кодировка]».

-verbose Выдавать сообщения о доступных / обработанных единицах компиляции

-showWeaveInfo
Отправлять сообщения о плетении

-журнал файл Укажите файл журнала для сообщений компилятора.

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

-время Отображение информации о скорости.

-noExit Не вызывать System.exit (n) в конце компиляции (n = 0, если ошибок нет)

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

-XterminateAfterCompilation
Заставляет компилятор завершить работу перед переплетением

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

-Xreweavable [: сжатие]
(Экспериментальный - теперь не рекомендуется по умолчанию) Запускает Weaver в повторно используемом режиме, который
заставляет его создавать тканые классы, которые можно переплетать, при условии
ограничение, что при попытке переплетения все типы, которые рекомендовали тканые
тип должен быть доступен.

-XnoInline
(Экспериментально) не встраивать советы

-XincrementalFile файл
(Экспериментально) Это работает как инкрементный режим, но с использованием файла, а не
стандартный ввод для управления компилятором. Он будет перекомпилировать каждый раз, когда файл
изменяется и останавливается при удалении файла.

-XserializableAspects
(Экспериментально) Обычно объявлять аспекты Serializable - это ошибка. Этот
опция снимает это ограничение.

-XnotReweavable
(Экспериментально) Создайте файлы классов, которые AspectJ впоследствии не может переплести.

-Xajruntimelevel: 1.2, ajruntimelevel: 1.5
(Экспериментальный) Позволяет сгенерировать код, ориентированный на уровень 1.2 или 1.5
Среда выполнения AspectJ (по умолчанию 1.5)

Файл имена
ajc принимает исходные файлы с .Ява расширение или .aj расширение. Мы
обычно используют .Ява для всех наших файлов в системе 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 и
работает на любой платформе, совместимой с Java 2. Код, который он генерирует, работает на любой версии Java 1.1 или
более поздняя совместимая платформа. Для получения дополнительной информации о совместимости с Java и с
предыдущие выпуски AspectJ см. "" >.

Примеры
A декриминализовано пример

Скомпилируйте два файла:

ajc HelloWorld.java Trace.java

An пример через -argfile / @

Чтобы не указывать имена файлов в командной строке, перечисляйте исходные файлы в виде строк с разделителями.
текстовый argfile. Пути к исходному файлу могут быть абсолютными или относительными по отношению к файлу argfile, а также могут
включить другие файлы argfiles с помощью @ -reference. Следующий файл источники.lst содержит
абсолютные и относительные файлы и @-ссылки:

Gui.java
/home/user/src/Library.java
data / Repository.java
data / Access.java
@ .. / .. / common / common.lst
@ / домашний / пользователь / SRC / lib.lst
просмотр / тело / ArrayView.java

Скомпилируйте файлы с помощью формы -argfile или @:

ajc -argfile источники.lst
ajc @ sources.lst

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

· Только ajc принимает параметры командной строки

· Jikes и Javac не принимают внутренние ссылки @argfile.

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

An пример через -в пути и -аспектный путь

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

Библиотеки аспектов, использующие -aspectpath: AspectJ 1.1 поддерживает создание из библиотек только для чтения
содержащие аспекты. Подобно банкам ввода, они влияют на весь ввод; в отличие от входных банок, они
сами на себя не влияют и не испускаются в качестве вывода. Исходники, скомпилированные с библиотеками аспектов
должны запускаться с теми же библиотеками аспектов в их пути к классам.

В следующем примере строится пример трассировки в среде командной строки; это создает
библиотека аспектов только для чтения, компилирует некоторые классы для использования в качестве входного байт-кода и компилирует
классы и другие источники с библиотекой аспектов.

Пример трассировки находится в дистрибутиве AspectJ ({аспектj} / doc / examples / tracing). Этот
использует следующие файлы:

аспектj1.1 /
bin /
АЕК
Библиотека /
аспектjrt.jar
Примеры/
отслеживание /
Круг.java
ПримерMain.java
Библиотека /
AbstractTrace.java
TraceMyClasses.java
notrace.lst
Square.java
трассировкаlib.lst
трассировка3.lst
TwoDShape.java
version3 /
Трассировка.java
TraceMyClasses.java

Ниже в качестве разделителя пути используется «;», а в качестве разделителя файлов используется «/». Все команды
в одной строке. При необходимости скорректируйте пути и команды для своей среды.

Установите путь, путь к классам и текущий каталог:

CD примеры
экспорт ajrt = .. / lib / aspectjrt.jar
экспорт CLASSPATH = "$ ajrt"
экспорт PATH = "../ бен: $ PATH "

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

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

Создайте приложение с трассировкой за один шаг:

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

Запустить приложение с трассировкой:

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

Создайте приложение с трассировкой из двоичных файлов в два этапа:

· (А) Создайте классы приложения (используя javac для демонстрации):

mkdir классы
javac -d трассировка классов / *. java
jar cfM app.jar -C классы.

· (Б) Создайте приложение с трассировкой:

ajc -inpath app.jar -aspectpath трассировка lib.jar -outjar трассировка app.jar

Запустите приложение с трассировкой (как указано выше):

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

Запустить приложение без трассировки:

java -classpath "app.jar" tracing.ExampleMain

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

Ява org.aspectj.tools.ajc.Главная [вариант...] [файл ...]

Для программного доступа к сообщениям компилятора используйте методы setHolder (IMessageHolder
держатель) и / или запустить (String [] аргументы, IMessageHolder держатель). АЕК сообщает о каждом сообщении
держатель с использованием IMessageHolder.handleMessage (..). Если вы просто хотите собирать сообщения,
использование обработчик сообщений Как ваш IMessageHolder. Например, скомпилируйте и запустите
после с аспектjtools.jar в пути к классам:

import 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 (аргументы, м);
IMessage [] ms = m.getMessages (ноль, истина);
System.out.println ("messages:" + Массивы.asList(РС));
}
}

Стек Следы и домен Исходный файл атрибут
В отличие от традиционных компиляторов Java, компилятор AspectJ в некоторых случаях может генерировать
файлы классов из нескольких исходных файлов. К сожалению, исходный формат файлов классов Java
не поддерживает несколько атрибутов SourceFile. Чтобы убедиться, что весь исходный файл
информация доступна, компилятор AspectJ может в некоторых случаях кодировать несколько имен файлов
в атрибуте SourceFile. Когда виртуальная машина Java генерирует трассировку стека, она использует это
атрибут, чтобы указать исходный файл.

(Компилятор 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)

где вместо обычного

Файл: LineNumber

формат, вы видите

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

В этом случае LineNumber - это обычное смещение в строках плюс "начальная строка" фактического
исходный файл. Это означает, что вы используете LineNumber как для идентификации исходного файла, так и для поиска
спорная линия. Число в [скобках] после каждого файла указывает виртуальный "запуск"
строка »для этого файла (первый файл имеет начало 0).

В нашем примере из трассировки исключения нулевого указателя виртуальная начальная строка - 1030.
Поскольку файл SynchAspect.java "начинается" со строки 1000 [1k], LineNumber указывает на строку
30 из SynchAspect.java.

Итак, когда вы сталкиваетесь с такими трассировками стека, способ найти фактическое местоположение источника - это
просмотрите список номеров "стартовой строки", чтобы найти номер сразу под показанной строкой
количество. Это файл, в котором на самом деле можно найти исходное местоположение. Затем вычтите
эту "начальную строку" от показанного номера строки, чтобы найти фактический номер строки внутри этого
.

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

АЕК(1)

Используйте ajc онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad