2013-05-27 35 views
15

Tôi đang làm việc trên một thao tác/tạo mã bytecode trong Java và tôi chỉ tự hỏi nếu có một cách dễ dàng tôi có thể kiểm tra bytecode. Tôi không muốn dịch ngược tệp, tôi thực sự muốn xem bytecode được biên dịch. Tôi không cần chỉnh sửa nó. Bất kỳ liên kết hoặc chương trình để làm điều này sẽ là câu trả lời chấp nhận được.Có thể xem các tệp lớp Java bytecode

+0

Bạn có thể làm điều đó trực tiếp từ bên trong IDE của mình. Có thể với một chút trợ giúp từ plugin. – maba

+2

Tôi nghĩ 'javap' là thứ bạn đang tìm kiếm. Một lệnh đi kèm với JDK. –

+0

thử javap -c classfile – Satya

Trả lời

2

Tôi đã làm việc trên decompiler có chế độ đầu ra bytecode được mã hóa màu (mà tôi thấy dễ đọc hơn nhiều so với javap). Nó cũng có thể xuất ra mã Java hoặc một 'bytecode AST' trung gian.

2

The javap command-line tool, được đóng gói với JDK của Oracle, cung cấp kết xuất văn bản chi tiết của các tệp .class cùng với hồ bơi không đổi và tất cả nội dung bytecode của tất cả các hàm. Chỉ cần chạy nó với -v để có được một bãi chứa đầy đủ.

+0

nhưng tôi muốn xem những gì trình biên dịch đọc khi đọc tệp để tôi có thể tạo các lớp tổng hợp của riêng mình. – Popgalop

+0

@Popgalop những gì trình biên dịch đọc trong là bytecode thực tế, mà không phải là một định dạng văn bản. Tôi đoán bạn có thể mở nó trong một trình soạn thảo hex và sử dụng [tham khảo này] (http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html) để phân tích nó một mình , nhưng nếu bạn muốn một bãi chứa có thể đọc được, 'javap -v' là câu trả lời. – Oak

6

Không chắc gì chính xác bạn cần, nhưng ngoài javap, mà là một công cụ dòng lệnh để hiển thị bytecode, bạn có thể có một cái nhìn tại javassist, asmcglib - họ cho phép bạn phân tích bytecode với mã java .

39

Vì bạn muốn được hướng dẫn đến một số chương trình có thể dễ dàng hiển thị cho bạn mã byte thì đề xuất của tôi là sử dụng IntelliJ IDEA vì nó có hỗ trợ tích hợp để xem mã byte.

Dưới đây là một ví dụ làm thế nào để làm điều đó (nó cũng có thể được ánh xạ tới một số phím của sự lựa chọn của bạn):

enter image description here

enter image description here

Nó là rất dễ dàng, và nó chắc chắn có thể được thực hiện trong nhật thực hoặc NetBeans.

+0

số dòng của nó ở đâu? L0, L1 .. có nghĩa là gì ???? – voipp

+0

Điều này cũng có sẵn trong Android studio không? Ít nhất là đối với các lớp có thể sử dụng cho JVM (như các xét nghiệm đơn vị cục bộ, vv). – PSIXO

+0

@PSIXO Tôi không biết, tôi chỉ sử dụng IntelliJ như là. – maba

Các vấn đề liên quan