簡體   English   中英

Jar 文件作為 Java 中的代理

[英]Jar file as agent in java

什么時候在java添加 jar 文件作為agent ,什么時候應該在bootclasspath添加?

示例:為什么我們在 eclipse 啟動時添加lombok.jar作為agent ,為什么還要添加到bootclasspath

 -javaagent:/home/$USER/eclipse/4.4-luna-SR2/lombok.jar
 -Xbootclasspath/a:/home/$USER/eclipse/4.4-luna-SR2/lombok.jar

首先,在 lombok 1.16.x 中不再需要將 lombok.jar 添加到引導類路徑。

代理存在於它們自己的類路徑中,但與常規程序共享引導類路徑。

代理通常使用檢測來修改程序中類的字節碼。 如果這些修改將來自您的程序的調用添加到僅在代理的 jar 中可用的代碼,應用程序類加載器和驗證器將針對程序的類路徑解析這些調用,使用應用程序類加載器,而應用程序類加載器又使用父類加載器,一直向上到引導類加載器。 有關更多信息,請參閱Oracle 文檔

由於代理類加載器不在父類加載器結構中,因此您無法調用僅在代理的 jar 文件中可用的代碼。

最簡單的解決方案是將代理的 jar 添加到引導類路徑,使代理 jar 中的代碼可用於代理和程序。

在 lombok 1.16.x 中,使用了不同的方法。 代理會修改 Eclipse 類加載器,以便在解析類時也查看 lombok.jar。

披露:我是龍目島的開發人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM