jar包反编译工具

jar包反编译工具在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。  有道是,知其然才知其所以然。有时候,我们…

大家好,又见面了,我是你们的朋友全栈君。

在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。

  有道是,知其然才知其所以然。有时候,我们必须读取jar里的打包的类。而有时还有可能要对它进行小量修改,使之适用于自己的非凡需求。

前期预备
  Java反编译工具:
  JGUI  http://pan.baidu.com/s/1o6xCtsQ
  压缩工具:
  Winrar

开始
  1. 将jar包解压
  我们可以使用winrar工具将jar解压到指定目录

  2. 反编译class
  使用 Java 反编译工具,将class文件反编译为java文件。(大多数反编译工具只提供单个class文件的反编译,这里推荐”小颖JAVA源代码反编译”工具,可以反编译一个目录下的所有class文件)

  3. 构建项目
  我们将反编译后的java文件设为项目的源文件目录。
  将jar,及jar所需要的其它lib,作为libraries加入项目中,这样可以保证我们的java文件可以编译。

  4. 对反编译的java进行修改
  通过反编译的java文件,可能还有错误,不能编译通过,在不影响作者原始意图的前提下,我们必须对它进行小量修改,保证可编译通过。
  保证java文件可以编译通过后,我们再在其基础上进行修改,使之符合自己的需求。

    
  5. 编译修改的java
  编译修改后的java文件,注重的是,最好只编译修改的单个java文件。
  编译完成后,我们进行测试,保证修改无误。因为JVM会先找寻classes目录下的class文件,并率先加入,这样我们修改编译后的class文件,便是测试时使用的class文件。
  重复这个过程,直至java达到我们的目的。

 

    不需要在命令行编译,将项目反编译成.java后将整个工程导入到Eclipse中,直接在Eclipse中查看.class文件

  6. Jar打包
  将修改生成后的class文件,替换我们将jar解压缩目录下的相应class文件,重新打包生成jar。
  我们可以使用jar命令进行打包(进入目录后执行jar -cvf manageRC.jar .)也可以使用winrar工具进行打包。使用winrar工具打包时,要注重选择压缩文件格式为zip,并将生成的压缩包文件的后缀名设置为jar。

  替换原来的jar。再进行最后一次测试。

转载于:https://my.oschina.net/u/2499632/blog/845565

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156956.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国内cdn加速免备案_免备案解析

    国内cdn加速免备案_免备案解析踩坑记录,初次尝试免备案使用国内CDN,当然结局是以失败告终,还受到了“惨痛”的教训,希望大家引以为戒,千万不要学我!!但是我现在备案了,所以可以正常使用!实现方案接入阿里云海外CDN首先通过“全球(不包含中国大陆)”的方式接入阿里云CDN,不需要检查域名备案情况,但是会在阿里云CDN留有记录了。接入阿里云海外CDN修改域名解析到国内节点虽然我们接入的是海外CDN,但是这时候将域名解析修改…

    2025年10月23日
    2
  • JavaScript高级程序设计 第4版(中文高清)扫描版

    JavaScript高级程序设计 第4版(中文高清)扫描版核心ECMAScript文档对象模型DOM浏览器对象模型BOMECMAScript定义语言的基础规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象

    2022年8月20日
    6
  • clientwidth innerWidth offsetWidth

    clientwidth innerWidth offsetWidthclientWidth 在任何窗口系统中都是指用户内容能放置的空间clientWidth是每个document一个,一个窗口中可以放置多个document,比如你用frame或iframe就可以放置多个document,这相当于图形界面编程中的MDI(多文档窗口应用,比如Word,Excel就可以同时打开多个文档)。 window.innerWidth能获取…

    2022年7月22日
    11
  • vscode好用的插件「建议收藏」

    1.Chinese(Simplified)LanguagePackforVisualStudioCode(汉化vscode必备)2.BracketPairColorizer(给代码中的括号添加亮色便于区分这里截图有报错是特意便于演示写的多组括号)3.AutoCloseTag(自动补全标签必备)4.AutoRenameTag(修改标签名自动同步修改闭合标签的标签名必备)5.ClassautocompleteforHTML(自动补全cl

    2022年4月17日
    235
  • unique的区别_list groupby

    unique的区别_list groupby数据库中根据你的查询条件只会返回唯一结果,就可以用uniqueResult这个方法!否则就用list();其返回类型为Object uniqueResult()方法通常是在业务方法查询语句中用到的,比如(UsersRoles)getSession().createQuery(“selecturfromUsersRolesurwhereur.role.id=?andur.

    2025年10月18日
    3
  • 使用ARP命令[通俗易懂]

    使用ARP命令[通俗易懂]讲解ARPCache更新过程,并分析对应请求报文以及响应报文的内容。1.建立网络拓扑2.填写4个主机的ip地址和子网掩码3.分别对主机pc0和pc1的命令行中输入“arp-a”命令查看其ARP高速缓存,发现无任何缓存信息。4.切换到simulation模式,pc0和pc1的ip分别为源地址和目的地址5.创建一个简单的PDU6.可以发现pc0和pc1之间成功进行了一次传输,即pc0得到了pc1的ip地址和MAC地址7.可以看出pc0发送了一个广播报文8.pc1得到响应

    2025年6月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号