这几天想研究一下hibernate等流行开源框架的源码,于是了解了一下如何在eclipse中查看导入的jar包的源码。

我们在开发或学习过程中,有时总避免不了查看jar包的源码。当我们按Ctrl+点击目标类名(方法)以查看源码时,通常会出现source not found的情况:如下:

Java查看jar包运行日志 java如何查看jar包的内容_eclipse java jar源码

下面介绍两种查看源码的方法:

1、当你有jar包的源码时,直接点击上图中的Attach Source,选择含有该jar包的文件路径(我的是一个zip文件,故我选择External File)(hibernate3.jar是从hibernate-distribution-3.3.2.GA-dist.zip的解压文件里导入的)

Java查看jar包运行日志 java如何查看jar包的内容_eclipse java jar源码_02

Java查看jar包运行日志 java如何查看jar包的内容_反编译_03

done  !!!就这么简单。。

不过要注意一下:Jar包一般是多个.Java源码编译之后的.class文件打包而成,不包含源码.Java文件,这也是为什么无法直接查看源码的原因。不过有时也会把源码打包进去,但源码在运行时不起作用。如果Jar包自带了源码的话,或许就可以直接查看而不用关联源码了。我们此处选的zip包是包含有Jar包的src文件的,里面有.Java文件。

2、如果没有Jar包的源码,则可以通过反编译的方法。

通过在eclipse中下载插件,help--eclipse marketplace--find:decompiler

下载图中选中的插件,我已经下载了。

下载之后,在preference中可看到:各个选项按默认的就可以了

Java查看jar包运行日志 java如何查看jar包的内容_jar包_04

测试:

随便选择一个没有关联源码的.class文件,右击,如图:

Java查看jar包运行日志 java如何查看jar包的内容_反编译_05

一般选择JD-Core,JD-Core更为先进一些,支持泛型、Enum、注解等JDK1.5以后才有的新语法。就可以查看源码了。


总结:

个人感觉第一种方法更简单方便,而且可以直接Ctrl+点击类名(方法名)查看源码,不过此方法必须要有源码;而第二种可以没有源码,不过要先找到想查看的类的.class文件,然后反编译才能查看该类的源码。

你是不是在想可不可以在没有源码的情况下也能像第一种方法一样能方便查看源码呢?我刚突发奇想,先将整个Jar包反编译,导出反编译源代码,然后再用第一种方法关联源码。亲测有效。步骤如下:

右击一个没有源码的Jar包,选择导出反编译源代码

Java查看jar包运行日志 java如何查看jar包的内容_Java查看jar包运行日志_06

选择文件名称及存储路径,保存:

Java查看jar包运行日志 java如何查看jar包的内容_反编译_07

接下来再按第一种方法的步骤将相关的.class文件关联反编译导出的源代码。

最后便是见证奇迹的时刻。。。

Java查看jar包运行日志 java如何查看jar包的内容_反编译_08