-javaagent選項告訴JVM的主類的JAR文件之前調用Java工具代理,你通常有一個命令選項來調用它:在清單中指定
java -javaagent:agent.jar program.jar
不必鍵入此每次都是非常不方便的,那麼有沒有辦法在program.jar
清單中指定代理?
# program.jar/META-INF/MANIFEST.MF
...
Java-Agent: agent.jar
-javaagent選項告訴JVM的主類的JAR文件之前調用Java工具代理,你通常有一個命令選項來調用它:在清單中指定
java -javaagent:agent.jar program.jar
不必鍵入此每次都是非常不方便的,那麼有沒有辦法在program.jar
清單中指定代理?
# program.jar/META-INF/MANIFEST.MF
...
Java-Agent: agent.jar
爪哇9增加它可以在可執行JAR文件可以使用被加載在主類之前開始的試劑啓動代理-Class屬性。
不幸的是,沒有這樣的選擇。作爲替代方案,您可以使用附加API動態地附加Java代理。然而,這具有一些限制,例如它通常只適用於隨JDK一起分發的JVM。
用於連接代理方便的API,看看Byte Buddy Agent。
在[這個答案]的末尾(http://stackoverflow.com/a/19912148/2711488)是使用附加API附着到自身,換言之,開始本身如Java劑的樣本代碼。主要目的是掌握'Instrumentation'實現實例。如果這是你的目標,那麼你已經完成了。如果你確定知道你的代碼將被包含在一個已經具有必需的'Agent-Class:'清單條目的jar文件中,那麼你可以通過跳過創建虛擬jar文件來簡化該解決方案。 – Holger