2016-12-04 11 views
1

에서 -javaagent 옵션을 지정, 당신은 일반적으로 명령 옵션을 호출 할 수 있습니다JAR 파일의 기본 클래스 전에 자바 계측 에이전트를 호출하기 위해 JVM에게 매니페스트

java -javaagent:agent.jar program.jar 

이를 입력 할 필요 아웃 때마다 꽤 불편합니다. 그래서 program.jar 매니페스트에 에이전트를 지정하는 방법이 있습니까?

# program.jar/META-INF/MANIFEST.MF 
... 
Java-Agent: agent.jar 
+0

[이 답변] (http://stackoverflow.com/a/19912148/2711488)의 끝에는 첨부 API를 사용하여 자체에 첨부하는 예제 코드, 즉 Java 에이전트로 시작하는 샘플 코드가 있습니다. 주된 목적은'Instrumentation' 구현 인스턴스를 사용하는 것입니다. 그것이 당신의 목표라면, 당신은 이미 끝났습니다. 코드가 이미 필요한'Agent-Class :'매니페스트 항목을 가지고있는 jar 파일에 포함될 것이라는 것을 알고 있다면 더미 jar 파일 생성을 건너 뛰어 해당 솔루션을 단순화 할 수 있습니다. – Holger

답변

1

Java 9는 실행 파일 JAR 파일에 사용할 수있는 Launcher-Agent-Class 속성을 추가하여 기본 클래스가로드되기 전에 에이전트를 시작합니다.

1

불행히도 이러한 옵션은 없습니다. 또는 attach API를 사용하여 Java 에이전트를 동적으로 연결할 수 있습니다. 그러나 이것은 몇 가지 한계가 있습니다. 이것은 일반적으로 JDK와 함께 배포되는 JVM에서만 작동합니다.

상담원을 연결하기위한 편리한 API는 Byte Buddy Agent을 참조하십시오.

+0

동일한 Jar 파일에서 에이전트 Premain 클래스를 지정하는 방법이 있습니까? 그렇기 때문에 처음부터 추가 Jar 파일을 가지고 있지 않습니다 (즉, program.jar의 agent.jar 내용을 가짐). – Clashsoft

+0

물론 가능합니다. 'Manain-Class' 헤더를 같은 매니페스트에 추가하고'java -javaagent : program.jar program.jar'을 실행하여 jar 파일을 결합 할 수 있습니다. –

+0

불행히도, 여전히'-javaagent' 옵션을 넣어야합니다 : ( – Clashsoft