gpt4 book ai didi

java - 在这种情况下 classLoader 加载类的顺序

转载 作者:搜寻专家 更新时间:2023-11-01 00:55:06 24 4
gpt4 key购买 nike

我在 eclipse 中将 lombok 添加到我的 java 项目中。它要求我在 eclipse.ini 文件中添加最后两行作为 vmargs

-showlocation
-vm
/home/$USER/JavaSE8/jdk1.8/bin/java
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms500m
-Xmx2g
-Dorg.eclipse.swt.browser.XULRunnerPath=''
-javaagent:/home/$USER/eclipse/4.4-luna-SR2/lombok.jar
-Xbootclasspath/a:/home/$USER/eclipse/4.4-luna-SR2/lombok.jar

我还在 libraries(项目 -> 属性 -> 库)中添加了 lombok.jar,并将 lombok.jar 移动到了在 eclipse 和 JRE 系统库(rt.jar、resources.jar 等)中,Order and Export 选项卡(Project -> Properties -> Order and Export)的最顶层都在 lombok.jar 下面。我对 lombok 主类的加载顺序感到困惑:

  1. eclipse 启动时,Bootstrap 类加载器应该加载 JRE 目录中的所有 JDK 类。 (但是由于我已经将 lombok.jar 在 Order 和 Export 中移到了 JRE 系统库之上,所以 rt.jar 会在 lombok.jar 之后加载吗?大多数情况下不会?因为 bootstrap无论如何都应该首先加载库!)

  2. 由于我们还使用 -XBootstrapClasspath 选项重新定义了 bootstrap 类路径,因此 Bootstrap Classloader 将加载 lombok.jar。

  3. 之后 Extensions classloader 加载 JRE 的 lib\ext 目录中的类。

  4. 然后 System-Classpath classloader 加载 CLASSPATH 环境变量指定的所有类和 jar(此加载是否考虑库的 Order 和 Export 顺序?)

如果我在这里的解释有误,请纠正我,因为我只是一个试图理解 ClassLoading 迷宫的新手。

最佳答案

您经常提到“订单和导出”。我假设您指的是项目类路径对话框中的同名选项卡。据我所知,这只涉及依赖于该项目的其他项目的项目库的可见性。它与 eclipse 本身的引导方式无关。

关于java - 在这种情况下 classLoader 加载类的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510607/

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