什么是jar包:
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性了,这些jar包一般都会放在lib目录下的。
比如我们平常在不知觉中也在引用别人写好的类里面的方法,例如println方法,ctrl+点击println就可以看到class文件里的源码,println方法的具体实现:
public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码。
如果你在使用编写代码的时候遇到找不到源代码的第三方库,而且你又需要看看这个库的具体实现,那么你就需要使用这个东西。而且如果你是使用Eclipse的话,还有一个Eclipse插件JadClipse,JadClipse提供一个class文件查看器可以直接打开class文件查看其反编译后的源代码, 太方便了,太方便了!
打开cmd,切换到桌面,我在桌面新建了一个java文件,然后javac helloWorld.java 进行编译
然后用javap -c helloWorld进行反编译,显示helloWorld.class反汇编出的字节码命令。得如下:
C:\>javap -help
Usage: javap <options> <classes>...
where options include:
-c 输出类中各方法的未解析的代码,即构成java字节码的指令
-classpath <pathlist> 指定javap用来查找类的路径。目录用:分隔
-extdirs <dirs> 覆盖搜索安装方式扩展的位置,扩展的缺省位置为jre/lib/ext
-help 输出帮助信息
-J<flag> 直接将flag传给运行时系统
-l 输出行及局部变量表
-public 只显示public类及成员
-protected 只显示protected和public类及成员。
-package 只显示包、protected和public类及成员,,这是缺省设置
-private 显示所有的类和成员
-s 输出内部类型签名
-bootclasspath <pathlist> 指定加载自举类所用的路径,如jre/lib/rt.jar或i18n.jar
-verbose 打印堆栈大小、各方法的locals及args参数,以及class文件的编译版本
用javap helloWorld: