原文: https://blog.csdn.net/qq_27093465/article/details/86239039
简单介绍
在 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,可有可无。不是什么问题。