2016-11-16 8 views
0

Я пытаюсь понять, как передать аргументы с помощью команды ajc для AspectJ. Моя команда состоит в следующем:AspectJ, проходящий в основном args

ajc -classpath ./build/:./build/lib/commons-lang3-3.4.jar -argfile $ASPECTJARGS 

В основном та же команда используется для работы в Java, но вместо того, чтобы мы имели (где arg1 и arg2 которые смотрели в $ASPECTJARGS сейчас):

java -classpath ./build/:./build/lib/commons-lang3-3.4.jar arg1 arg2 

Тогда основная функция возьмут arg1 и arg2 напрямую. Теперь я получаю ошибку

unrecognized single argument: arg1 

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

ответ

0

Не совсем уверен, что я понял вопрос, но это работает для прохождения в аргументах к AJC:

export ASPECTJARGS="Foo.java -1.8 -showWeaveInfo -verbose" 

ajc -classpath ./build/:./build/lib/commons-lang3-3.4.jar $ASPECTJARGS 

Так же, как это было бы для вызова Java. Если вы хотите использовать argfile затем создать файл (например, с именем thefile) с этим содержимым:

-1.8 
-showWeaveInfo 
Foo.java 

Затем запустите AJC:

ajc -classpath .build/:./build/lib/commons-lang3-3.4.jar -argfile thefile 

Или через стенографии:

ajc -classpath .build/:./build/lib/commons-lang3-3.4.jar @thefile 
+0

Это не то, что я имел в виду. Я хотел бы передать аргументы в ajc, как и в java. Другими словами, передайте аргументы основной функции через массив String args []. – dinamix

+0

Как я уже сказал, не совсем уверен, что понял вопрос. Что вы хотите передать, это не вариант, который изменит поведение? Конкретный пример был бы велик. Вы можете обойти сценарий запуска, если вам нужно - открыть ajc или ajc.sh и посмотреть, как он вызывает java для запуска основной точки входа в компиляторе. –

+0

Я столкнулся с этим сообщением об ошибке в Windows, когда, например, путь к среде выполнения AspectJ содержал пробелы, как в «C: \ Program Files \ Java \ AspectJ \ lib \ aspectj.jar», и я использовал это прямо или косвенно (через ASPECTJ_HOME) в моем пути класса ajc без цитирования пути к классам. Попытайтесь вложить свой путь к классам в двойные кавычки и посмотреть, что произойдет. В последнее время я не пробовал Linux, поэтому я не знаю, помогает ли это. – kriegaex