영어프랑스어스페인어

Ad


온웍스 파비콘

ajc - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 ajc 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 ajc 명령입니다.

프로그램:

이름


ajc — AspectJ 및 Java 언어용 컴파일러 및 바이트코드 위버

개요


ajc [옵션 ] [파일... | @파일... | -argfile 파일... ]

상품 설명


XNUMXD덴탈의 ajc 명령은 AspectJ 및 Java 소스 및 .class 파일을 컴파일하고 짜서 생성합니다.
.class 파일은 모든 Java VM(1.1 이상)과 호환됩니다. 그것은 컴파일과
바이트코드 위빙 및 증분 빌드 지원 런타임에 바이트코드를 짜낼 수도 있습니다.
사용 "" >.

옵션 뒤의 인수는 컴파일할 소스 파일을 지정합니다. 소스를 지정하려면
수업, 사용 -인패스 (아래에). 파일은 명령줄이나
파일. 그만큼 -argfile 파일@파일 형식은 동일하며 의미로 해석됩니다.
지정된 파일에 나열된 모든 인수.

참고 : 명시적으로 통과해야 합니다. ajc 필요한 모든 소스. 출처를 꼭 기재하세요
aspect 또는 pointcut 뿐만 아니라 영향을 받는 모든 유형에 대해서도 마찬가지입니다. 모두 지정
javac와 달리 ajc는 다음을 위한 소스 경로를 검색하지 않기 때문에 소스가 필요합니다.
클래스. (영향을 받는 유형에 대한 논의는 다음을 참조하십시오. XNUMXD덴탈의 측면J
프로그램 작성 안내서, 실시 충수 ../progguide/implementation.html) .

소스를 지정하려면 소스 파일을 인수로 나열하거나 옵션을 사용할 수 있습니다. -소스루트
or -인패스. 모든 유형에 대해 여러 소스가 있는 경우 결과는 ajc 이후 정의되지 않습니다.
어떤 소스가 올바른지 확인할 방법이 없습니다. (이것은 사용자가
inpath에 대상 디렉토리를 포함하고 다시 빌드하십시오.)

옵션
-injars 항아리 목록
더 이상 사용되지 않음: 1.2부터 디렉토리도 사용하는 -inpath를 사용합니다.

-인패스 경로
소스 바이트코드로 모든 .class 파일을 출력에 포함합니다.
적용 가능한 측면으로 짜여진 클래스. 경로는 단일
zip 파일 또는 디렉토리에 대한 경로 목록을 포함하는 인수로,
플랫폼별 경로 구분 기호입니다.

-aspectpath 경로
경로에 있는 jar 파일 및 디렉토리의 바이너리 측면을 모든 소스로 엮습니다.
측면은 동일한 버전의 컴파일러에서 출력되어야 합니다. 언제
출력 클래스를 실행하는 경우 실행 클래스 경로에는 모든 aspectpath가 포함되어야 합니다.
항목. Path는 classpath와 마찬가지로 경로 목록을 포함하는 단일 인수입니다.
플랫폼별 클래스 경로 구분 기호로 구분된 jar 파일로.

-argfile 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
파일에는 줄로 구분된 인수 목록이 포함되어 있습니다. 파일의 각 줄
하나의 옵션, 파일 이름 또는 인수 문자열(예: 클래스 경로 또는
인패스). 파일에서 읽은 인수는 인수 목록에 삽입됩니다.
명령. 파일의 상대 경로는 디렉토리에서 계산됩니다.
파일을 포함합니다(현재 작업 디렉토리가 아님). Java에서와 같이 주석,
시작 // 그리고 줄 끝까지 확장합니다. 인수에 지정된 옵션
파일은 기존 옵션 값을 확장하는 대신 재정의할 수 있으므로 피하십시오.
다음과 같은 옵션 지정 -클래스 경로 인수 파일에서
인수 파일은 유일한 빌드 사양입니다. 양식 @파일 와 동일합니다
지정 -argfile 파일.

-아웃자 출력.jar
zip 파일 output.jar에 출력 클래스를 넣습니다.

-outxml 로드 시 위빙을 위한 aop.xml 파일을 기본 이름으로 생성합니다.

-outxml 파일 사용자 정의/aop.xml
사용자 정의 이름을 사용하여 로드 시 위빙을 위한 op.xml 파일을 생성합니다.

-증분
컴파일러를 지속적으로 실행합니다. 초기 컴파일 후 컴파일러는
표준 입력에서 줄 바꿈을 읽을 때까지 재컴파일을 기다리고,
'q'가 나오면 종료합니다. 필요한 구성 요소만 다시 컴파일하므로
재컴파일은 두 번째 컴파일을 수행하는 것보다 훨씬 빠릅니다. 이것은 요구한다
- 소스 루트.

-소스루트 DirPath
에 나열된 디렉토리에서 모든 .java 또는 .aj 소스 파일을 찾아 빌드합니다.
디렉터리 경로. 클래스 경로와 마찬가지로 DirPaths는 다음 목록을 포함하는 단일 인수입니다.
플랫폼별 클래스 경로 구분 기호로 구분되는 디렉토리 경로입니다.
-증분에 의해 필요합니다.

-교차 참조
출력 디렉토리에 빌드 .ajsym 파일을 생성합니다. 보기에 사용
AspectJ Browser와 같은 도구에 의한 교차 참조.

-emacssym emacs 지원을 위해 .ajesym 기호 파일을 생성합니다(더 이상 사용되지 않음).

-Xlint -Xlint와 동일:경고(기본적으로 활성화됨)

-Xlint:{레벨}
잠재적인 프로그래밍 실수에 대한 메시지의 기본 수준 설정
크로스커팅 코드. {level}은(는) 무시, 경고 또는 오류일 수 있습니다. 이것은 재정의
aspectjtools.jar의 org/aspectj/weaver/XlintDefault.properties에 있는 항목이지만
-Xlintfile 옵션을 사용하여 설정된 수준을 재정의하지 않습니다.

-Xlint 파일 속성 파일
특정 교차 메시지에 대한 수준을 설정하려면 속성 파일을 지정하십시오.
PropertyFile은 동일한 속성을 사용하는 Java .properties 파일의 경로입니다.
org/aspectj/weaver/XlintDefault.properties의 이름과 값
aspectjtools.jar도 재정의합니다.

-help 컴파일러 옵션 및 사용법에 대한 정보를 내보냅니다.

-version AspectJ 컴파일러의 버전을 내보냅니다.

-클래스 경로 경로
사용자 클래스 파일을 찾을 위치를 지정하십시오. 경로는 다음을 포함하는 단일 인수입니다.
플랫폼별로 구분된 zip 파일 또는 디렉토리의 경로 목록
경로 구분자.

-부트 클래스 경로 경로
다음과 같은 경우 유형을 평가하기 위해 VM의 bootclasspath 위치를 재정의합니다.
컴파일. Path는 zip 파일의 경로 목록을 포함하는 단일 인수입니다.
플랫폼별 경로 구분 기호로 구분된 디렉터리입니다.

-extdirs 경로
유형 평가를 위해 VM의 확장 디렉토리 위치 재정의
컴파일할 때. 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을 사용할 때,
Java 1.4에서 유효한 assert() 문은 컴파일러 오류를 발생시킵니다.
-source 1.4를 사용할 때 처리 단언하다 키워드로 주장을 구현
1.4 언어 사양에 따라. -source 1.5, Java 5 언어 사용 시
기능이 허용됩니다.

-nowarn 경고를 내보내지 않음('-warn:none'과 동일) 이것은 메시지를 억제하지 않습니다.
에 의해 생성 된 알리다 경고 or 클린트.

-경고하다: 항목
의심스러운 코드의 쉼표로 구분된 목록의 모든 인스턴스에 대해 경고를 내보냅니다.
(예: '-warn:unusedLocals, deprecation'):

생성자 이름이 있는 constructorName 메서드
packageDefaultMethod는 패키지 기본 방법을 재정의하려고 시도합니다.
더 이상 사용되지 않는 유형 또는 멤버의 사용 중단
maskedCatchBlocks 숨겨진 캐치 블록
usedLocals 지역 변수는 읽지 않습니다.
usedArguments 메서드 인수는 읽지 않음
파일의 코드에서 사용하지 않는 usedImports import 문
없음 모든 컴파일러 경고를 억제합니다.

-경고:없음 에 의해 생성된 메시지를 억제하지 않습니다. 알리다 경고 or 클린트.

-천칭
-warn:deprecation과 동일

-noImportError
확인되지 않은 가져오기에 대해 오류를 내보내지 않음

-procedOn 오류
오류가 발생한 후에도 계속 컴파일하고 문제 메서드가 있는 클래스 파일을 덤프합니다.

-g:[줄, 변수, 소스]
세 가지 형식을 취할 수 있는 디버그 속성 수준:

-g 모든 디버그 정보('-g:lines,vars,source')
-g:none 디버그 정보 없음
-g:{items} [lines, vars, source]의 일부/전체에 대한 디버그 정보, 예:
-g:줄, 소스

-preserveAllLocals
디버깅을 용이하게 하기 위해 코드 생성 중에 모든 로컬 변수를 유지합니다.

-참조정보
참조 정보를 계산합니다.

-부호화 체재
기본 소스 인코딩 형식을 지정합니다. 파일별로 사용자 정의 인코딩 지정
각 입력 소스 파일/폴더 이름에 '[인코딩]' 접미사를 붙여 기본으로 합니다.

-verbose 액세스/처리된 컴파일 단위에 대한 메시지를 내보냅니다.

-showWeaveInfo
직조에 대한 메시지 보내기

-로그 파일 컴파일러 메시지에 대한 로그 파일을 지정합니다.

-progress 진행 상황을 표시합니다(-log 모드 필요).

-time 속도 정보를 표시합니다.

-noExit 컴파일 종료 시 System.exit(n)을 호출하지 않습니다(오류가 없으면 n=0).

-반복하다 N 컴파일 프로세스를 N번 반복합니다(일반적으로 성능 분석을 수행하기 위해).

-컴파일 후 Xterminate
위빙 전에 컴파일러가 종료되도록 합니다.

-XaddSerialVersionUID
컴파일러가 SerialVersionUID 필드를 계산하고 모든 유형에 추가하도록 합니다.
측면의 영향을 받는 직렬화 가능 구현. 필드는
직조가 일어나기 전에 클래스를 기반으로 계산됩니다.

-Xreweavable[:압축]
(실험적 - 현재 기본값으로 더 이상 사용되지 않음) weaver를 reweavable 모드에서 실행합니다.
재편될 수 있는 직조된 클래스를 생성하도록 합니다.
짠 것을 권장하는 모든 유형의 재직을 시도할 때 제한
유형에 액세스할 수 있어야 합니다.

-XnoInline
(실험적) 조언 주위에 인라인하지 마십시오.

-X증분 파일 파일
(실험적) 이것은 증분 모드처럼 작동하지만 대신 파일을 사용합니다.
컴파일러를 제어하기 위한 표준 입력. 파일이 다음과 같을 때마다 다시 컴파일됩니다.
변경되고 파일이 삭제되면 중지됩니다.

-XserializedAspects
(실험적) 일반적으로 측면을 직렬화 가능하게 선언하는 것은 오류입니다. 이것
옵션은 해당 제한을 제거합니다.

-XnotReweavable
(실험적) AspectJ에서 이후에 다시 짜일 수 없는 클래스 파일을 만듭니다.

-Xaj런타임레벨:1.2, aj런타임레벨:1.5
(실험적) 1.2 또는 1.5 레벨을 대상으로 하는 코드 생성 허용
AspectJ 런타임(기본값 1.5)

입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 이름
ajc는 다음 중 하나를 사용하여 소스 파일을 허용합니다. .자바 확장 또는 .aj 확대. 우리
일반적으로 사용 .자바 AspectJ 시스템의 모든 파일에 대해 -- aspect를 포함하는 파일
클래스를 포함하는 파일뿐만 아니라. 그러나 기계적으로 필요한 경우
AspectJ의 추가 기능을 사용하는 파일을 순수한 파일과 구별하십시오.
Java를 사용하는 것이 좋습니다. .aj 해당 파일의 확장자.

명명 규칙과 같은 다른 기계적 구별 수단을 권장하지 않습니다.
또는 하위 패키지에 찬성하여 .aj 확대.

· 파일 이름 규칙은 적용하기 어렵고 측면에 대해 어색한 이름으로 이어집니다.
대신 TracingAspect.java 우리는 사용하는 것이 좋습니다 추적.aj (또는 그냥 추적.자바)
대신.

· 하위 패키지는 시스템의 자연스러운 위치에서 측면을 이동하고 다음을 생성할 수 있습니다.
특권적 측면에 대한 인위적인 필요. 다음과 같은 하위 패키지를 추가하는 대신
측면 우리는 사용하는 것이 좋습니다 .aj 확장자 및 이러한 파일을 귀하의
대신 기존 패키지.

호환성
AspectJ는 Java 프로그래밍 언어에 대한 호환 가능한 확장입니다. AspectJ 컴파일러
준수 XNUMXD덴탈의 자바 지원하는 언어 사양, 둘째 Edition (책)
http://java.sun.com/docs/books/jls/index.html 그리고 XNUMXD덴탈의 자바 온라인 머신
사양, 둘째 Edition (책) http://java.sun.com/docs/books/vmspec/index.html
모든 Java 2 호환 플랫폼에서 실행됩니다. 생성하는 코드는 모든 Java 1.1 또는
나중에 호환되는 플랫폼. Java 및 Java와의 호환성에 대한 자세한 내용은
AspectJ의 이전 릴리스, 참조 "" >.


A 간편한 설치

두 파일을 컴파일합니다.

ajc HelloWorld.java 추적.자바

An 사용 -인수파일/@

명령줄에서 파일 이름을 지정하지 않으려면 소스 파일을 줄로 구분하여 나열하십시오.
텍스트 인수 파일. 소스 파일 경로는 argfile에 대해 절대적이거나 상대적일 수 있으며
@-reference로 다른 argfile을 포함합니다. 다음 파일 소스.lst 이 포함되어 있습니다
절대 및 상대 파일 및 @-참조:

구이.자바
/홈/사용자/src/Library.java
데이터/리포지토리.자바
데이터/액세스.자바
@../../common/common.lst
@/홈/사용자/src/lib.lst
보기/본문/ArrayView.java

-argfile 또는 @ 형식을 사용하여 파일을 컴파일합니다.

ajc -argfile 소스.lst
ajc @sources.lst

Argfile은 jikes 및 javac에서도 지원되므로 하이브리드 빌드에서 파일을 사용할 수 있습니다.
그러나 지원은 다양합니다.

· ajc만 명령줄 옵션을 허용합니다.

· Jikes 및 Javac는 내부 @argfile 참조를 허용하지 않습니다.

· Jikes 및 Javac는 명령줄에서 @file 형식만 허용합니다.

An 사용 -인패스 -aspectpath

-inpath를 사용한 바이트코드 위빙: AspectJ 1.2는 입력 zip/jar에서 .class 파일 위빙을 지원합니다.
파일 및 디렉토리. 입력 jar를 사용하는 것은 해당 소스 파일을 컴파일하는 것과 같습니다.
모든 바이너리가 출력으로 내보내집니다. Java 호환 컴파일러는 다음과 같이 다를 수 있습니다.
그들의 출력, ajc는 javac, jikes, eclipse,
그리고 물론, ajc. -inpath에 포함된 측면은 다른 .class처럼 짜여집니다.
파일에 영향을 미치며 평소와 같이 다른 유형에 영향을 미칩니다.

-aspectpath를 사용하는 Aspect 라이브러리: AspectJ 1.1은 읽기 전용 라이브러리에서 위빙을 지원합니다.
측면을 포함합니다. 입력 항아리와 마찬가지로 모든 입력에 영향을 줍니다. 입력 항아리와 달리
자체는 영향을 받지 않거나 출력으로 방출되지 않습니다. aspect 라이브러리로 컴파일된 소스
클래스 경로에서 동일한 aspect 라이브러리로 실행되어야 합니다.

다음 예제는 명령줄 환경에서 추적 예제를 빌드합니다. 그것은 생성
읽기 전용 측면 라이브러리, 입력 바이트 코드로 사용하기 위해 일부 클래스 컴파일 및 컴파일
aspect 라이브러리가 있는 클래스 및 기타 소스.

추적 예제는 AspectJ 배포판({aspectj}/doc/examples/tracing)에 있습니다. 이것
다음 파일을 사용합니다.

관점j1.1/
큰 상자/
ajc
lib /
aspectjrt.jar
예/
트레이싱/
원.자바
예제메인.자바
lib /
추상추적.자바
TraceMyClasses.java
notrace.lst
스퀘어.자바
Tracelib.lst
추적v3.lst
TwoDShape.java
버전3/
추적.자바
TraceMyClasses.java

아래에서 경로 구분자는 ";"로 사용되지만 파일 구분자는 "/"입니다. 모든 명령은
한 줄에. 필요에 따라 환경에 맞게 경로와 명령을 조정합니다.

경로, 클래스 경로 및 현재 디렉터리를 설정합니다.

cd 예
내보내기 ajrt=../lib/aspectjrt.jar
내보내기 CLASSPATH="$ajrt"
내보내기 경로 = "../큰 상자:$PATH"

읽기 전용 추적 라이브러리를 빌드합니다.

ajc -argfile 추적/tracelib.lst -outjar tracelib.jar

한 번에 추적을 사용하여 애플리케이션을 빌드합니다.

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

추적을 사용하여 애플리케이션을 실행합니다.

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

다음 두 단계로 바이너리에서 추적하여 애플리케이션을 빌드합니다.

· (a) 응용 프로그램 클래스를 빌드합니다(시연을 위해 javac 사용).

mkdir 클래스
javac -d 클래스 추적/*.java
jar cfM app.jar -C 클래스 .

· (b) 추적을 사용하여 애플리케이션 빌드:

ajc -inpath app.jar -aspectpath Tracelib.jar -outjar 추적된app.jar

추적을 사용하여 애플리케이션을 실행합니다(위와 동일).

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

추적하지 않고 애플리케이션을 실행합니다.

java -classpath "app.jar" 추적.ExampleMain

XNUMXD덴탈의 측면J 컴파일러 API
AspectJ 컴파일러는 완전히 Java로 구현되며 Java 클래스로 호출할 수 있습니다.
공용으로 간주되어야 하는 유일한 인터페이스는 다음의 공용 메소드입니다.
org.aspectj.tools.ajc.Main. 예, 메인(문자열[] 인수) 표준을 취한다 ajc 명령
라인 인수. 이것은 컴파일러를 실행하는 다른 방법이

자바 org.aspectj.tools.ajc.Main [선택권...] [파일...]

프로그래밍 방식으로 컴파일러 메시지에 액세스하려면 다음 메서드를 사용하십시오. setHolder(IMessageHolder
보유자) 및 / 또는 실행(문자열[] 인수, IMessageHolder 보유자). ajc 각 메시지를
홀더 사용 IMessageHolder.handleMessage(..). 메시지만 수집하고 싶다면,
사용 메시지 핸들러 너처럼 IMessageHolder. 예를 들어 다음을 컴파일하고 실행합니다.
따라 aspectjtools.jar 클래스 경로에서:

import org.aspectj.bridge.*;
org.aspectj.tools.ajc.Main 가져오기;
가져오기 java.util.Arrays;

공개 클래스 WrapAjc {
공공 정적 무효 메인 (문자열 []에 args) {
메인 컴파일러 = new Main();
MessageHandler m = 새로운 MessageHandler();
컴파일러.런(인수, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("메시지: " + 배열.asList(밀리초));
}
}

스택 추적 전에, 소스 파일 속성
기존 자바 컴파일러와 달리 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)

평소 대신 어디에

파일:줄번호

형식, 당신은 참조

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

이 경우 LineNumber는 줄의 일반적인 오프셋에 실제의 "시작 줄"을 더한 것입니다.
소스 파일. 즉, LineNumber를 사용하여 소스 파일을 식별하고
문제의 라인. 각 파일 뒤의 [괄호] 안의 숫자는 가상 "시작
해당 파일에 대해 "라인"(첫 번째 파일의 시작은 0)입니다.

null 포인터 예외 추적의 예에서 가상 시작 라인은 1030입니다.
파일 SynchAspect.java가 라인 1000[1k]에서 "시작"하기 때문에 LineNumber는 라인을 가리킵니다.
SyncAspect.java의 30.

따라서 이러한 스택 추적에 직면했을 때 실제 소스 위치를 찾는 방법은
"시작 줄" 번호 목록을 살펴보고 표시된 줄 바로 아래에 있는 번호를 찾습니다.
숫자. 소스 위치를 실제로 찾을 수 있는 파일입니다. 그런 다음 빼기
표시된 줄 번호에서 해당 "시작 줄"을 사용하여 그 안에 있는 실제 줄 번호를 찾습니다.
파일.

단일 소스 파일에서 나온 클래스 파일에서 AspectJ 컴파일러는 다음을 생성합니다.
SourceFile 속성은 기존 Java 컴파일러와 일치합니다.

ajc(1)

onworks.net 서비스를 사용하여 ajc 온라인 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad