在 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