在 intelliJ idea 裏面看到 ,Project Structure——》 Libraries ——》 Sources 的路徑是紅色的
看圖會比較好。以guava包爲例來說明。
可以看到在這看整個maven項目的依賴時,發現如圖的情況,這紅色是什麼情況,是報錯嗎?需要處理嗎?這3個不同jar都是什麼東西,各自有啥作用。大概會有這麼些疑問吧。️。
假如在依賴庫如上的情況下,你點進去,看guava的源碼,會有下圖的效果。
給你2個選擇,一個是選則source,一個是下載source。注意,這個時候,你看到的文件是class文件,是可以直接運行的文件,之所以能看到內部的具體實現,是idea給你自動逆轉換啦。感謝idea吧
(記得當年剛剛工作的時候,使用的eclipse,然後debug的時候,假如要進入這些個沒有sources的jar的時候,就進不去這個class文件,他還傻乎乎的給個彈窗,讓我倒入sources文件,還是idea高級,直接喊你下載。)
這個時候點擊download sources,下載源碼。
這個時候,你看到的文件,就變成啦Java文件,而且,還帶上了很多的註釋。
這個時候,再看倉庫library的變化
可以看到剛剛還是紅色的sources文件,現在有啦,下面的Javadoc還沒有。
然後,再看mven的repository裏面的情況
可以看到jar類型的文件jar包,這地方有2個。
(有麼有疑惑,這個帶sources的jar怎麼比classes的jar還小呢?因爲Java文件在編譯生成class文件的時候,會對代碼進行優化,這個優化是針對運行的,所以,由Java文件變class文件,他到底是變大,還是變小,這個是不確定。)
三個jar包同時存在的也不是沒有,看下面
最後,說一下,各自的作用。
classes的jar,是正兒八經運行項目的時候使用的,因爲這個是直接編譯好的class文件,可以直接被虛擬機運行的。
sources的jar,就是給開發人員看的,自己在學習和debug的時候,可以看到jar包裏面的各種註釋說明,方便學習。
Javadoc的jar,也和sources的jar一個道理吧,起到輔助的作用吧。這個不是必須的,guava就沒有提示你下載這個,就已經顯示了很多的註釋了。
所以,
最開始的那個圖裏面的只要classes的jar不報錯,下面的2個jar,可有可無。不是什麼問題。
瞭解原理就好啦。
我寫完文章,給自己點個贊,不過分吧,
不過分,那我可就點啦啊。
我先點爲敬,你們隨意。大家隨意。不要客氣。。。
作者:李學凱
來源:CSDN