5

我添加lombok到我的 java 项目中eclipseeclipse.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

我还添加lombok.jarlibraries(项目 -> 属性 -> 库),并移到lombok.jar了 eclipse 和 JRE 系统库(rt.jar,resources. jar 等)都在下面lombok.jar。我对将lombok主类加载为的顺序感到困惑:

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

  2. 由于我们还重新定义了bootstrap classpathusing -XBootstrapClasspath 选项,因此 lombok.jar 将由Bootstrap Classloader.

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

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

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

4

1 回答 1

0

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

于 2016-06-01T20:30:01.367 回答