有时候我们需要对java源码进行调试,通常可以关联它对应jar包的源代码进行断点调试,但如果需要更加详细的程序运行信息可以对源代码进行更改,下面就讲讲怎么去更改源码的具体过程:

1.准备工具有:

    a.反编译的工具,能把java jar里面的 .class文件反编译成 .java文件,这里我用的反编译工具是 jd-gui.exe

    b.eclipse工具

    c.需要要更改的jar包

2.把jar包拖进 jd-gui.exe中 我使用的是 grizzly-http-server-2.2.16.jar 包 例如下图, 然后把要点击 File ->sava all Sources 保存 然后会生成一个 zip压缩包。

   然后解压,解压里面都已经变成了 .java文件了,在eclipse中创建一个java工程,然后把你想要更改的 .java文件复制到工程中。

wKiom1aGNv-SCMeOAAB5mz7MpDY728.png


3.如果你要更改的jar包依赖于其它jar包的类 最好是把其它的jar包都导入到 eclipse中,然后创建一个 package包 与要改的源码对应的类下包名一下致,然后就在源码类中加入你想要的代码,并把它重新编译生成字节码文件,生成字节码文件只需要把这个类创建一个对象并运行

wKioL1aGPYCjo4SmAADp8FeVfo8496.png


4.找到生成的 .class文件 按Ctrl + shrit +R 看到如下图:

wKiom1aGPryx-dqfAAELbDDb9Pg633.png

然后选择最右边的 倒三角形勾上 show Derived Resources:

wKiom1aGQTagTo1RAACMLI5Ljjk710.png

双击 .class 进入之后 按快捷键 Alt + 空格 出现如下图:

wKioL1aGQgqw_lEwAAE5XGrw0P4578.png

根据地址找到生成后的文件并复制,把原来的 jar包给解压,找到这个文件的具体包下 粘贴进去把原来的覆盖,然后再把解压之后的文件复制到 eclipse中 点击 Export -> java -> JAR file ->Next -> Finish

a.解压:

wKiom1aGQ-rRTVqSAACFcZNMG0w303.png

b.替换:

wKioL1aGRGHhPT_qAADWNJmTgc0725.png

c.复制到eclipse:

wKiom1aGRKuyJ6XeAAB5IDpMzzI124.png

d.生成 jar包:

wKiom1aGRWmB41FXAADCNDftMRU226.png


5.查看修改后的 jar包,把生成后的 jar包拖到 jd-gui.exe中就可以看到。

wKiom1aGRjzgK-OeAADNyLiGCNo856.png


6.完成。