gpt4 book ai didi

java - Jar文件作为java中的代理

转载 作者:行者123 更新时间:2023-11-30 07:21:19 25 4
gpt4 key购买 nike

何时将 jar 文件添加为 java 中的 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 添加到 bootclasspath 中。

代理位于自己的类路径中,但与常规程序共享引导类路径。

代理通常使用检测来修改程序中类的字节码。如果这些修改将程序中的调用添加到仅在代理的 jar 中可用的代码,则应用程序类加载器和 validator 将使用应用程序类加载器(依次使用父类加载器)来解析针对程序的类路径的这些调用,一直向上到引导类加载器。请参阅Oracle documentation了解更多信息。

由于代理类加载器不在父类加载器结构中,因此您无法调用仅在代理的 jar 文件中可用的代码。

最简单的解决方案是将代理的 jar 添加到 bootclasspath,使代理 jar 中的代码可用于代理和程序。

在 lombok 1.16.x 中,使用了不同的方法。代理修改 Eclipse 类加载器,以便在解析类时也查找 lombok.jar。

披露:我是一名 lombok 开发人员。

关于java - Jar文件作为java中的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com