2016-05-28 61 views
1

我在classpath中添加了Lombok 1.12 jar文件,同時我在庫中提供了Lombok 1.16 jar文件(同時在eclipse中配置構建路徑)。 Eclipse無法識別lombok的一些註釋,如@Builder(正在發出編譯器錯誤)。 (也@Builder被列入主要Lombok1.12版)Eclipse中classpath和buildpath中的不同jar文件

後來我糾正在classpath中給Lombok 1.16 jar文件也。這次通過eclipse可以識別@Builder註解。現在一切正常。

這意味着將vm中的類路徑與構建路徑進行比較,並執行檢查,無論二進制文件(lombok.jar)對於類路徑和構建路徑都是相同的。我的斷言是否正確?請糾正我,如果我錯誤地解釋這一點。

+0

在eclipse中,作爲代理安裝的jar用於代碼生成。項目中的jar用於在項目中使用註釋。代理使用不同的類路徑。 –

+0

@RoelSpilker通過代碼生成,你的意思是jvm將指令集保存在一個特定的lombok註釋的地方,以便編譯器可以從那裏獲取? – Ashley

+0

這是正確的。 –

回答

1

構建路徑是一種類路徑的超集,它包含類路徑,源代碼路徑和依賴項目的所有資源。如果您有兩個不同版本的JVM,JVM將從構建路徑中第一個的jar中加載類。這可以通過編輯(構建路徑 - >配置構建路徑 - >導出順序)進行管理。如果所需的類在第一個版本中不可用,它將檢查第二版jar。如果它根本找不到,那麼編譯錯誤將被拋出

+0

感謝您的回答。你能否給我提供一些你給出的解釋的鏈接,以便我可以確定? – Ashley

+0

http://stackoverflow.com/questions/3529459/what-is-the-difference-between-class-path-and-build-path –

+0

http://stackoverflow.com/questions/6105124/java-classpath-classloading -multiple-versions-the-same-jar-project –

0

在eclipse中,如果兩個jar都在構建路徑中,一個你想引用給它優先順序,使其頂部 - 建立路徑最後一個選項卡或你可以脫開你不想引用的較低版本。

+0

我沒有在構建路徑中給出兩個不同的版本。我爲buildpath和classpath提供了不同版本的jar。 Eclipse顯示我編譯器錯誤。儘管構建路徑僅包含正確的版本。它是包含錯誤版本的類路徑。 @smruti答案不符合我的問題。 jvm如何解決這個衝突? – Ashley

相關問題