在 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,可有可无。不是什么问题。

了解原理就好啦。

我写完文章,给自己点个赞,不过分吧,
不过分,那我可就点啦啊。
我先点为敬,你们随意。大家随意。不要客气。。。


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

java double数字类型竟然可以是 Infinity(翻译一下:无穷 ∞ ) 以及如何判断处理知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。