簡體   English   中英

classLoader將在此方案中加載類的順序

[英]Order in which classLoader will load classes in this scenario

我在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系統庫中的Order and Export選項卡(Project - > Properties - > Order and Export)中的最頂層。 (rt.jar,resources.jar等)都在lombok.jar 我對lombok主類將被加載的順序感到困惑:

  1. 啟動eclipseBootstrap類加載器應該加載JRE目錄中的所有JDK類。 (但是因為我已經將lombok.jar移動到Order和Export中,在JRE系統庫之上,將在lombok.jar之后加載rt.jar。大部分都沒有?因為無論什么東西都應該首先加載bootstrap庫!)

  2. 由於我們還使用-XBootstrapClasspath選項重新定義了bootstrap classpath ,因此lstok.jar將由Bootstrap Classloader Classloader Bootstrap Classloader

  3. 之后, Extensions classloader加載Extensions classloader加載JRE的lib \\ ext目錄中的類。

  4. 然后System-Classpath classloader加載System-Classpath classloader加載CLASSPATH環境變量指定的所有類和jar(此加載是否考慮了庫的Order and Export順序?)

如果我錯誤地解釋這里的事情,請糾正我,因為我只是新手試圖理解ClassLoading迷宮。

你經常提到“訂單和出口”。 我假設您的意思是項目類路徑對話框中的相同命名選項卡。 據我所知,這僅涉及項目庫對依賴於該項目的其他項目的可見性。 它與eclipse本身的自舉方式無關。

暫無
暫無

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

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