Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

ajc - Trực tuyến trên đám mây

Chạy ajc trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh ajc có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


ajc - trình biên dịch và trình dệt bytecode cho ngôn ngữ AspectJ và Java

SYNOPSIS


ajc [Các lựa chọn] [tập tin... | @tập tin... | -argfile tập tin... ]

Mô tả


Sản phẩm ajc biên dịch lệnh và kết hợp các tệp nguồn AspectJ và Java và .class, tạo ra
Các tệp .class tương thích với bất kỳ máy ảo Java nào (1.1 trở lên). Nó kết hợp biên dịch và
dệt bytecode và hỗ trợ các bản dựng tăng dần; bạn cũng có thể dệt bytecode tại thời điểm chạy
sử dụng "" >.

Các đối số sau các tùy chọn chỉ định (các) tệp nguồn để biên dịch. Để chỉ định nguồn
lớp học, sử dụng -đường dẫn (phía dưới). Các tệp có thể được liệt kê trực tiếp trên dòng lệnh hoặc trong một
tập tin. Các -argfile hồ sơ@hồ sơ các hình thức tương đương nhau và được hiểu là có nghĩa
tất cả các đối số được liệt kê trong tệp được chỉ định.

Lưu ý: Bạn phải vượt qua một cách rõ ràng ajc tất cả các nguồn cần thiết. Đảm bảo bao gồm nguồn
không chỉ đối với các khía cạnh hoặc phím tắt mà còn đối với bất kỳ loại nào bị ảnh hưởng. Chỉ định tất cả
nguồn là cần thiết bởi vì, không giống như javac, ajc không tìm kiếm chuacepath cho
các lớp học. (Để thảo luận về những loại bị ảnh hưởng có thể được yêu cầu, hãy xem Sản phẩm Khía cạnhJ
Lập trình Hướng dẫn, Thực hiện Phụ lục ../progguide/implementation.html) .

Để chỉ định nguồn, bạn có thể liệt kê các tệp nguồn dưới dạng đối số hoặc sử dụng các tùy chọn -source Cơ sở
or -đường dẫn. Nếu có nhiều nguồn cho bất kỳ loại nào, kết quả là không xác định vì ajc
không có cách nào để xác định nguồn nào là chính xác. (Điều này xảy ra thường xuyên nhất khi người dùng
bao gồm thư mục đích trên đường dẫn đến và xây dựng lại.)

Các lựa chọn
-trong lọ Danh sách Jar
không dùng nữa: kể từ 1.2, sử dụng -inpath, cũng có thư mục.

-đường dẫn Đường dẫn
Chấp nhận làm mã nguồn bytecode bất kỳ tệp .class nào trong đầu ra sẽ bao gồm các tệp này
các lớp, có thể được dệt bằng bất kỳ khía cạnh áp dụng nào. Đường dẫn là một
đối số chứa danh sách các đường dẫn đến tệp hoặc thư mục zip, được phân tách bằng
dấu phân cách đường dẫn dành riêng cho nền tảng.

-đường dẫn khía cạnh Đường dẫn
Đưa các khía cạnh nhị phân từ các tệp jar và thư mục trên đường dẫn vào tất cả các nguồn.
Các khía cạnh lẽ ra phải được xuất ra bởi cùng một phiên bản của trình biên dịch. Khi nào
chạy các lớp đầu ra, chạy classpath phải chứa tất cả các đường dẫn khía cạnh
mục. Đường dẫn, như classpath, là một đối số duy nhất chứa danh sách các đường dẫn
đến các tệp jar, được phân tách bằng dấu phân cách classpath dành riêng cho nền tảng.

-argfile Tập tin
Tệp chứa danh sách các đối số được phân tách bằng dòng. Mỗi dòng trong tệp
nên chứa một tùy chọn, tên tệp hoặc chuỗi đối số (ví dụ: một classpath hoặc
đường vào). Đối số đọc từ tệp được chèn vào danh sách đối số cho
lệnh. Các đường dẫn tương đối trong tệp được tính toán từ thư mục
chứa tệp (không phải thư mục làm việc hiện tại). Nhận xét, như trong Java,
bắt đầu với // và kéo dài đến cuối dòng. Các tùy chọn được chỉ định trong đối số
các tệp có thể ghi đè thay vì mở rộng các giá trị tùy chọn hiện có, vì vậy hãy tránh
xác định các tùy chọn như -classpath trong các tệp đối số không giống như
tệp đối số là đặc điểm kỹ thuật xây dựng duy nhất. Hình thức @tập tin giống như
xác định -argfile hồ sơ.

-outjar đầu ra.jar
Đặt các lớp đầu ra trong tệp zip output.jar.

-outxml Tạo tệp aop.xml để dệt thời gian tải với tên mặc định.

-outxmlfile custom / aop.xml
Tạo tệp aop.xml để dệt trong thời gian tải với tên tùy chỉnh.

-tình cảm
Chạy trình biên dịch liên tục. Sau lần biên dịch đầu tiên, trình biên dịch sẽ
đợi để biên dịch lại cho đến khi nó đọc một dòng mới từ đầu vào chuẩn và sẽ
thoát ra khi nó đọc một 'q'. Nó sẽ chỉ biên dịch lại các thành phần cần thiết, vì vậy
biên dịch lại sẽ nhanh hơn nhiều so với biên dịch lần thứ hai. Điều này đòi hỏi
-cơ sở.

-source Cơ sở DirPath
Tìm và tạo tất cả các tệp nguồn .java hoặc .aj trong bất kỳ thư mục nào được liệt kê trong
DirPaths. DirPaths, giống như classpath, là một đối số duy nhất chứa danh sách
đường dẫn đến các thư mục, được phân cách bằng dấu phân cách classpath dành riêng cho nền tảng.
Bắt buộc bởi -incremental.

-crossrefs
Tạo tệp .ajsym bản dựng vào thư mục đầu ra. Dùng để xem
cắt chéo các tham chiếu bằng các công cụ như Trình duyệt AspectJ.

-emacssym Tạo tệp biểu tượng .ajesym để hỗ trợ emacs (không dùng nữa).

-Xlint Giống như -Xlint: cảnh báo (được bật theo mặc định)

-Xlint: {level}
Đặt mức mặc định cho các thông báo về các lỗi lập trình tiềm ẩn trong
mã cắt ngang. {level} có thể bị bỏ qua, cảnh báo hoặc lỗi. Điều này ghi đè
các mục nhập trong tổ chức / khía cạnh / dệt may / XlintDefault.properties từ khía cạnh ảnh đại diện.jar, nhưng
không ghi đè các mức được đặt bằng tùy chọn -Xlintfile.

-Xlintfile Thuộc tính
Chỉ định tệp thuộc tính để đặt mức cho các thông báo cắt ngang cụ thể.
PropertyFile là một đường dẫn đến tệp .properties Java có cùng thuộc tính
các tên và giá trị dưới dạng tổ chức / khía cạnh / dệt may / XlintDefault.properties từ
surfacejtools.jar, mà nó cũng ghi đè.

-help Gửi thông tin về các tùy chọn và cách sử dụng trình biên dịch

-version Gửi phiên bản của trình biên dịch AspectJ

-classpath Đường dẫn
Chỉ định nơi để tìm tệp lớp người dùng. Đường dẫn là một đối số duy nhất chứa một
danh sách các đường dẫn đến tệp zip hoặc thư mục, được phân tách theo nền tảng cụ thể
dấu phân cách đường dẫn.

-bootclasspath Đường dẫn
Ghi đè vị trí của bootclasspath của VM nhằm mục đích đánh giá các loại khi
biên dịch. Đường dẫn là một đối số duy nhất chứa danh sách các đường dẫn đến tệp zip hoặc
thư mục, được phân cách bằng dấu phân cách đường dẫn dành riêng cho nền tảng.

-extdirs Đường dẫn
Ghi đè vị trí của các thư mục tiện ích mở rộng của VM nhằm mục đích đánh giá các loại
khi biên dịch. Đường dẫn là một đối số duy nhất chứa danh sách các đường dẫn đến
thư mục, được phân cách bằng dấu phân cách đường dẫn dành riêng cho nền tảng.

-d thư mục
Chỉ định nơi đặt các tệp .class đã tạo. Nếu không được chỉ định, thư mục
mặc định là dir làm việc hiện tại.

-Mục tiêu [1.1 đến 1.5]
Chỉ định cài đặt mục tiêu tệp phân loại (1.1 đến 1.5, mặc định là 1.2)

-1.3 Đặt mức tuân thủ thành 1.3 Điều này ngụ ý -nguồn 1.3 và-mục tiêu 1.1.

-1.4 Đặt mức tuân thủ thành 1.4 (mặc định) Điều này ngụ ý -nguồn 1.4 và-mục tiêu 1.2.

-1.5 Đặt mức tuân thủ thành 1.5. Điều này ngụ ý -source 1.5 và -target 1.5.

-Source [1.3 | 1.4 | 1.5]
Chuyển đổi các xác nhận (1.3, 1.4 hoặc 1.5 - mặc định là 1.4). Khi sử dụng -source 1.3,
một câu lệnh khẳng định () hợp lệ trong Java 1.4 sẽ dẫn đến lỗi trình biên dịch.
Khi sử dụng -source 1.4, hãy xử lý khẳng định như một từ khóa và triển khai các xác nhận
theo thông số ngôn ngữ 1.4. Khi sử dụng -source 1.5, ngôn ngữ Java 5
các tính năng được cho phép.

-nowarn Không gửi cảnh báo (tương đương với '-warn: none') Điều này không ngăn chặn các thông báo
được tạo ra bởi khai cảnh báo or Xlint.

-cảnh báo: mặt hàng
Đưa ra cảnh báo đối với bất kỳ trường hợp nào của danh sách mã nghi vấn được phân tách bằng dấu phẩy
(ví dụ: '-warn: allowLocals, không được dùng nữa'):

phương thức constructorName với tên phương thức khởi tạo
packageDefaultMethod cố gắng ghi đè phương thức package-default
không sử dụng loại hoặc thành viên không dùng nữa
maskedCatchBlocks khối bắt ẩn
biến cục bộ không bao giờ được đọc
Đối số của phương thức usedArguments không bao giờ đọc
Không sử dụng câu lệnh nhập nhập khẩu không được sử dụng bởi mã trong tệp
không có ngăn chặn tất cả các cảnh báo trình biên dịch

-anh: không có không ngăn chặn các thông báo được tạo bởi khai cảnh báo or Xlint.

-không sử dụng
Giống như -warn: phản đối

-noImportError
Không phát sinh lỗi cho các lần nhập chưa được giải quyết

-proceedOnError
Tiếp tục biên dịch sau khi lỗi, kết xuất các tệp lớp với các phương pháp sự cố

-g: [dòng, vars, nguồn]
cấp thuộc tính gỡ lỗi, có thể có ba dạng:

-g tất cả thông tin gỡ lỗi ('-g: lines, vars, source')
-g: không có thông tin gỡ lỗi
-g: {items} gỡ lỗi thông tin cho bất kỳ / tất cả [dòng, vars, nguồn], ví dụ:
-g: dòng, nguồn

-preserveAllLocals
Bảo tồn tất cả các biến cục bộ trong quá trình tạo mã (để tạo điều kiện gỡ lỗi).

-thông tin tham khảo
Tính toán thông tin tham khảo.

-mã hóa định dạng
Chỉ định định dạng mã hóa nguồn mặc định. Chỉ định mã hóa tùy chỉnh trên mỗi tệp
cơ sở bằng cách đặt mỗi tên tệp / thư mục nguồn đầu vào bằng '[mã hóa]'.

-verbose Gửi thông báo về các đơn vị biên dịch đã truy cập / đã xử lý

-showWeaveInfo
Phát ra thông điệp về dệt

-log hồ sơ Chỉ định một tệp nhật ký cho các thông báo trình biên dịch.

-progress Hiển thị tiến trình (yêu cầu chế độ -log).

-thời gian Hiển thị thông tin tốc độ.

-noExit Không gọi System.exit (n) khi kết thúc biên dịch (n = 0 nếu không có lỗi)

-lặp lại N Lặp lại quá trình biên dịch N lần (thường để phân tích hiệu suất).

-XterminaAfterCompilation
Khiến trình biên dịch kết thúc trước khi dệt

-XaddSerialVersionUID
Khiến trình biên dịch tính toán và thêm trường SerialVersionUID vào bất kỳ loại nào
triển khai Serializable bị ảnh hưởng bởi một khía cạnh. Lĩnh vực này là
được tính toán dựa trên lớp trước khi dệt được diễn ra.

-Xreweavable [: nén]
(Thử nghiệm - không được dùng nữa vì bây giờ là mặc định) Chạy trình dệt ở chế độ có thể sử dụng lại được
khiến nó tạo ra các lớp dệt có thể được đan lại, tùy thuộc vào
hạn chế rằng cố gắng quấn lại tất cả các loại đã khuyên dệt
loại phải có thể truy cập được.

-XnoNội tuyến
(Thử nghiệm) không nội dòng xung quanh lời khuyên

-XincrementalFile hồ sơ
(Thử nghiệm) Chế độ này hoạt động giống như chế độ tăng dần, nhưng sử dụng tệp thay vì
đầu vào tiêu chuẩn để điều khiển trình biên dịch. Nó sẽ biên dịch lại mỗi khi tệp được
đã thay đổi và dừng khi tệp bị xóa.

-XserializableAspects
(Thử nghiệm) Thông thường sẽ xảy ra lỗi khi khai báo các khía cạnh Có thể tuần tự hóa. Cái này
tùy chọn loại bỏ hạn chế đó.

-XnotCó thể tái chế
(Thử nghiệm) Tạo các tệp lớp mà sau này AspectJ không thể lặp lại được.

-Xajruntimelevel: 1.2, ajruntimelevel: 1.5
(Thử nghiệm) Cho phép tạo mã nhắm mục tiêu cấp 1.2 hoặc 1.5
Thời gian chạy AspectJ (mặc định 1.5)

Tập tin tên
ajc chấp nhận các tệp nguồn với .Java phần mở rộng hoặc .aj gia hạn. chúng tôi
sử dụng bình thường .Java cho tất cả các tệp của chúng tôi trong hệ thống AspectJ - các tệp chứa các khía cạnh
cũng như các tệp chứa các lớp. Tuy nhiên, nếu bạn có nhu cầu về cơ
phân biệt các tệp sử dụng chức năng bổ sung của AspectJ với những tệp thuần túy
Java, chúng tôi khuyên bạn nên sử dụng .aj phần mở rộng cho các tệp đó.

Chúng tôi muốn không khuyến khích các phương tiện phân biệt máy móc khác như quy ước đặt tên
hoặc các gói phụ có lợi cho .aj gia hạn.

· Các quy ước về tên tệp khó thực thi và dẫn đến các tên khó xử cho các khía cạnh của bạn.
Thay vì TracingAspect.java chúng tôi khuyên bạn nên sử dụng Truy tìm.aj (hoặc chỉ Truy tìm.java)
thay thế.

· Các gói con di chuyển các khía cạnh ra khỏi vị trí tự nhiên của chúng trong một hệ thống và có thể tạo ra một
nhu cầu giả tạo về các khía cạnh đặc quyền. Thay vì thêm một gói phụ như
các khía cạnh chúng tôi khuyên bạn nên sử dụng .aj phần mở rộng và bao gồm các tệp này trong
các gói hiện có để thay thế.

Khả năng tương thích
AspectJ là một phần mở rộng tương thích với ngôn ngữ lập trình Java. Trình biên dịch AspectJ
tuân theo Sản phẩm Java Ngôn ngữ Đặc tả, Thứ hai Phiên bản (SÁCH)
http://java.sun.com/docs/books/jls/index.html và đến Sản phẩm Java ảo
Sự chỉ rõ, Thứ hai Phiên bản (SÁCH) http://java.sun.com/docs/books/vmspec/index.html
chạy trên bất kỳ nền tảng tương thích Java 2 nào. Mã nó tạo ra chạy trên bất kỳ Java 1.1 nào hoặc
nền tảng tương thích sau này. Để biết thêm thông tin về khả năng tương thích với Java và với
các bản phát hành trước của AspectJ, xem "" >.

Các ví dụ
A đơn giản ví dụ

Biên dịch hai tệp:

ajc HelloWorld.java Trace.java

An ví dụ sử dụng -argfile / @

Để tránh chỉ định tên tệp trên dòng lệnh, hãy liệt kê các tệp nguồn trong một phân cách bằng dòng
văn bản argfile. Đường dẫn tệp nguồn có thể là tuyệt đối hoặc tương đối với argfile, và có thể
bao gồm các tệp tin khác theo @ -reference. Tập tin sau nguồn.lst chứa
tệp tuyệt đối và tương đối và @ -references:

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

Biên dịch các tệp bằng cách sử dụng -argfile hoặc @ form:

ajc -argfile nguồn.lst
ajc @ sources.lst

Argfiles cũng được hỗ trợ bởi jikes và javac, vì vậy bạn có thể sử dụng các tệp trong các bản dựng kết hợp.
Tuy nhiên, sự hỗ trợ khác nhau:

· Chỉ ajc chấp nhận các tùy chọn dòng lệnh

· Jikes và Javac không chấp nhận các tham chiếu @argfile nội bộ.

· Jikes và Javac chỉ chấp nhận dạng @file trên dòng lệnh.

An ví dụ sử dụng -đường dẫn -đường dẫn khía cạnh

Dệt Bytecode sử dụng -inpath: AspectJ 1.2 hỗ trợ dệt các tệp .class trong zip / jar đầu vào
tệp và thư mục. Sử dụng các lọ đầu vào giống như việc biên dịch các tệp nguồn tương ứng,
và tất cả các mã nhị phân được phát ra đầu ra. Mặc dù các trình biên dịch tuân thủ Java có thể khác nhau về
đầu ra của họ, ajc nên lấy làm đầu vào bất kỳ tệp lớp nào được tạo bởi javac, jikes, eclipse,
và, tất nhiên, ajc. Các khía cạnh được bao gồm trong -inpath sẽ được dệt thành giống như các lớp .class khác
và chúng sẽ ảnh hưởng đến các loại khác như bình thường.

Thư viện Aspect sử dụng -aspectpath: AspectJ 1.1 hỗ trợ dệt từ các thư viện chỉ đọc
chứa các khía cạnh. Giống như các lọ đầu vào, chúng ảnh hưởng đến tất cả các đầu vào; không giống như các lọ đầu vào, chúng
chúng không bị ảnh hưởng hoặc phát ra dưới dạng đầu ra. Các nguồn được biên dịch với các thư viện khía cạnh
phải được chạy với cùng một thư viện khía cạnh trên classpath của chúng.

Ví dụ sau đây xây dựng ví dụ theo dõi trong môi trường dòng lệnh; nó tạo ra
thư viện khía cạnh chỉ đọc, biên dịch một số lớp để sử dụng làm mã bytecode đầu vào và biên dịch
các lớp và các nguồn khác với thư viện khía cạnh.

Ví dụ theo dõi nằm trong phân phối AspectJ ({khía cạnh / doc / example / tracing). Cái này
sử dụng các tệp sau:

khía cạnhj1.1 /
thùng rác/
ajc
lib /
surfacejrt.jar
ví dụ /
truy tìm /
Circle.java
Ví dụMain.java
lib /
Tóm tắtTrace.java
TraceMyClasses.java
notrace.lst
Vuông.java
Traclib.lst
dấu vếtv3.lst
HaiDShape.java
phiên bản3 /
Dấu vết.java
TraceMyClasses.java

Dưới đây, dấu phân tách đường dẫn được coi là ";", nhưng dấu phân tách tệp là "/". Tất cả các lệnh đều
trên một dòng. Điều chỉnh các đường dẫn và lệnh cho môi trường của bạn nếu cần.

Thiết lập đường dẫn, classpath và thư mục hiện tại:

ví dụ cd
export ajrt = .. / lib / evaljrt.jar
xuất CLASSPATH = "$ ajrt"
xuất PATH = "../ thùng rác: $ PATH "

Xây dựng thư viện theo dõi chỉ đọc:

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

Xây dựng ứng dụng với tính năng theo dõi trong một bước:

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

Chạy ứng dụng với tính năng theo dõi:

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

Xây dựng ứng dụng với truy tìm từ các tệp nhị phân trong hai bước:

· (A) Xây dựng các lớp ứng dụng (sử dụng javac để trình diễn):

lớp mkdir
javac -d các lớp theo dõi / *. java
các lớp jar cfM app.jar -C.

· (B) Xây dựng ứng dụng với truy tìm:

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

Chạy ứng dụng với tính năng theo dõi (tương tự như trên):

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

Chạy ứng dụng mà không cần theo dõi:

java -classpath "app.jar" tracing.ExampleMain

Sản phẩm Khía cạnhJ trình biên dịch API
Trình biên dịch AspectJ được triển khai hoàn toàn bằng Java và có thể được gọi là một lớp Java.
Giao diện duy nhất nên được coi là công khai là các phương thức công khai trong
org.aspectj.tools.ajc.Main. Ví dụ, main (Chuỗi [] lập luận) lấy tiêu chuẩn ajc lệnh
đối số dòng. Điều này có nghĩa là một cách thay thế để chạy trình biên dịch là

Java org.aspectj.tools.ajc.Main [Lựa chọn...] [tập tin...]

Để truy cập thông báo trình biên dịch theo chương trình, hãy sử dụng các phương pháp setHolder (IMessageHolder
người giữ) và / hoặc run (Chuỗi [] lập luận, iMessageHolder người giữ). ajc báo cáo từng tin nhắn cho
chủ sử dụng IMessageHolder.handleMessage (..). Nếu bạn chỉ muốn thu thập các tin nhắn,
sử dụng Trình xử lý tin nhắn như bạn iMessageHolder. Ví dụ: biên dịch và chạy
theo dõi với surfacejtools.jar trên classpath:

nhập org.aspectj.bridge. *;
nhập org.aspectj.tools.ajc.Main;
nhập java.util.Arrays;

lớp công khai WrapAjc {
public static void main (String [] args) {
Trình biên dịch chính = new Main ();
MessageHandler m = new MessageHandler ();
compiler.run (args, m);
IMessage [] ms = m.getMessages (null, true);
System.out.println ("thông báo:" + Mảng.asList(bệnh đa xơ cứng));
}
}

Sắp xếp Dấu vết các NguồnTệp thuộc tính
Không giống như các trình biên dịch java truyền thống, trình biên dịch AspectJ trong một số trường hợp nhất định có thể tạo ra
tệp phân lớp từ nhiều tệp nguồn. Thật không may, định dạng tệp lớp Java gốc
không hỗ trợ nhiều thuộc tính SourceFile. Để đảm bảo tất cả tệp nguồn
thông tin sẵn có, trình biên dịch AspectJ trong một số trường hợp có thể mã hóa nhiều tên tệp
trong thuộc tính SourceFile. Khi máy ảo Java tạo dấu vết ngăn xếp, nó sử dụng
để chỉ định tệp nguồn.

(Trình biên dịch AspectJ 1.0 cũng hỗ trợ các phần mở rộng tệp .class của JSR-45. Những
cho phép trình gỡ lỗi tuân thủ (chẳng hạn như jdb trong Java 1.4.1) xác định đúng tệp và dòng
thậm chí được cung cấp nhiều tệp nguồn cho một lớp duy nhất. Hỗ trợ JSR-45 được lên kế hoạch cho ajc trong
AspectJ 1.1, nhưng không có trong bản phát hành đầu tiên. Để tải các tệp .class hoàn toàn có thể gỡ lỗi, hãy sử dụng
tùy chọn -XnoInline.)

Có lẽ lần duy nhất bạn có thể thấy định dạng này là khi bạn xem dấu vết ngăn xếp, nơi bạn
có thể gặp phải dấu vết của định dạng

java.lang.NullPulumException
tại Main.new $ constructor_call37 (Main.java; SynchAspect.java [1k]: 1030)

ở đâu thay vì bình thường

Tệp: LineNumber

định dạng, bạn thấy

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

Trong trường hợp này, LineNumber là phần bù thông thường ở các dòng cộng với "dòng bắt đầu" của giá trị thực
tập tin nguồn. Điều đó có nghĩa là bạn sử dụng LineNumber để xác định tệp nguồn và để tìm
dòng được đề cập. Số trong [ngoặc] sau mỗi tệp cho bạn biết "bắt đầu" ảo
dòng "cho tệp đó (tệp đầu tiên có bắt đầu bằng 0).

Trong ví dụ của chúng tôi từ dấu vết ngoại lệ con trỏ null, dòng bắt đầu ảo là 1030.
Vì tệp SynchAspect.java "bắt đầu" ở dòng 1000 [1k], LineNumber trỏ đến dòng
30 của SynchAspect.java.

Vì vậy, khi đối mặt với các dấu vết ngăn xếp như vậy, cách để tìm vị trí nguồn thực tế là
xem qua danh sách các số "dòng bắt đầu" để tìm số ngay dưới dòng được hiển thị
con số. Đó là tệp mà vị trí nguồn thực sự có thể được tìm thấy. Sau đó, trừ đi
"dòng bắt đầu" từ số dòng được hiển thị để tìm số dòng thực trong đó
tập tin.

Trong một tệp lớp chỉ đến từ một tệp nguồn duy nhất, trình biên dịch AspectJ tạo
Thuộc tính SourceFile phù hợp với các trình biên dịch Java truyền thống.

ajc(1)

Sử dụng ajc trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad