2012-08-10 40 views
39

Tôi muốn tìm hiểu điều gì đó về javaagents, nhưng nghiên cứu không phải là dễ dàng. Hầu hết kết quả đều đề cập đến JADE. Tôi biết đại lý java có thể có nghĩa là hai điều:Hướng dẫn về javaagents

  1. Một đại lý được lập trình trong Java là hiện thân của đại lý phân phối .
  2. Một thành phần phần mềm ở mức độ thấp để tăng cường cho hoạt động của một JVM, chẳng hạn như profilers, công cụ mã bảo hiểm, vv

tôi đã tìm thấy câu hỏi tương tự here, nhưng tiếc là nó cũng đề cập đến phiên bản 1

Bạn có biết bất kỳ bài viết, hướng dẫn dành cho người mới bắt đầu, dự án mẫu về javaagent trong phiên bản 2 không? Tôi đã tìm thấy một here, nhưng tôi đang tìm kiếm thêm.

+1

http://stackoverflow.com/questions/1277219/starting-a-java-agent-after-program-start cũng có một số liên kết hữu ích – Vadzim

Trả lời

62

Trường hợp thứ hai nói về Java Instrumentation API - liên kết này trỏ đến một Javadoc mô tả khá rõ ràng.

Và đây là hướng dẫn đầy đủ và example of how to create java instrumentation agent.

Khái niệm chính là:

  1. Thực hiện một phương pháp premain (như là một phép loại suy để main) tĩnh, như thế này:

    import java.lang.instrument.Instrumentation; 
    
    class Example { 
        public static void premain(String args, Instrumentation inst) { 
         ... 
        } 
    } 
    
  2. Tạo một file manifest (nói, manifest.txt) đánh dấu lớp này để thực hiện trước chính. nội dung của nó là:

    Premain-Class: Example 
    
  3. Compile lớp và gói lớp này vào một kho lưu trữ JAR:

    javac Example.java 
    jar cmf manifest.txt yourAwesomeAgent.jar *.class 
    
  4. Execute JVM của bạn với -javaagent tham số, như thế này:

    java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar 
    
+8

Điều quan trọng là tham số '-javaagent' đi trước tham số' -jar'. – berezovskyi

+1

Tôi phải thêm một mục bổ sung vào tệp kê khai của mình để nó hoạt động với việc sử dụng Javassist. Bạn có thể thấy trong câu trả lời của tôi cho câu hỏi này: https://stackoverflow.com/questions/10423319/how-do-you-analyze-fatal-javaagent-errors – 11101101b

+1

Gần đây tôi đã làm theo các bước sau để xây dựng một đại lý. Tôi tiếp tục chạy vào các vấn đề tạo ra các jar, cho đến khi tôi phát hiện ra rằng lệnh nên có liệt kê các tập tin mục tiêu .jar đầu tiên và tập tin manifest sau. –

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