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
Trả lời
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.
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 đủ.
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
@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
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):
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.
- 1. Java bytecode: các loại biến cục bộ?
- 2. Có thể biên dịch các tệp lớp với SDK Java 7 có thể chạy trên Java 6 JVM không?
- 3. Có thể bytecode của một lớp thay đổi nếu một lớp cha/giao diện thay đổi?
- 4. Có thể viết trực tiếp chương trình với các hướng dẫn bytecode Java không?
- 5. Biên dịch sang bytecode java (không sử dụng Java)
- 6. Java - Mã nhị phân có giống với ByteCode không?
- 7. Các tệp bytecode được biên dịch (.pyc) có thể được tạo trong thư mục khác không?
- 8. Javascript có thể gỡ lỗi bytecode
- 9. Thư viện/chương trình nào có thể được sử dụng để tạo Java bytecode?
- 10. Xóa hướng dẫn khỏi mã Java bytecode
- 11. Nhận bytecode từ lớp được nạp
- 12. Có thể xem tệp Excel trên Linux
- 13. Có thể đệ quy các Generics Java giữa hai lớp
- 14. Các giải pháp thay thế cho công cụ bytecode Java
- 15. chú thích java được thể hiện như thế nào trong bytecode java
- 16. Cách thêm các lớp Java mới vào các lớp hiện có trong tệp jar
- 17. Có trình tối ưu hóa bytecode Java nào xóa các ảnh không sử dụng được không?
- 18. Scala - Java interop: có thể Scala phát ra enums trong bytecode cho Java để tiêu thụ không?
- 19. Có thể cập nhật ứng dụng web Java bằng cách thay thế các tệp lớp đơn?
- 20. Tôi có thể nhập các tệp lớp Java vào JRuby không?
- 21. Có thể kế thừa một lớp cuối cùng sửa đổi bytecode bằng cách nào đó không?
- 22. Tìm hiểu về Java bytecode và JVM
- 23. Lập trình bằng mã Java bytecode
- 24. Cách tạo bytecode và lưu vào tệp .class?
- 25. Tạo các lớp Java từ các tệp .XSD ...?
- 26. Coco/R có thể chuyển tệp được phân tích cú pháp thành bytecode không?
- 27. Xem tất cả các lớp học siêu trong Java
- 28. C++ xác định xem lớp có thể so sánh được
- 29. Java không thể xem tệp trên hệ thống tệp có chứa các ký tự không hợp lệ
- 30. Eclipse có tự động nhập các lớp trong các tệp jsp cụ thể là
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
Tôi nghĩ 'javap' là thứ bạn đang tìm kiếm. Một lệnh đi kèm với JDK. –
thử javap -c classfile – Satya