Jar包进行反编译,修改后重新打包

Wesley13
• 阅读 2212

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

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

一、准备

  Java反编译工具:

  JD-GUI:http://jd.benow.ca/

  Jar包进行反编译,修改后重新打包

  解压工具:

  WinRAR

二、反编译

  1、使用WinRAR解压工具将Jar包解压到指定位置。

  2、使用Java反编译工具JD-GUI将.class文件反编译为Java文件。

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

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

  5、编译修改后的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。再进行最后一次测试。

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java Compiler API
在早期的版本中(JavaSE5及以前版本)中只能通过tools.jar中的com.sun.tools.javac包来调用Java编译器,但由于tools.jar不是标准的Java库,在使用时必须要设置这个jar的路径。而在JavaSE6中为我们提供了标准的包来操作Java编译器,这就是javax.tools包。编译java文件
Easter79 Easter79
3年前
tomcat调试servlet
有时候web程序会引用到workspace下面的其它工程,在tomcat调试的时候,经常会出现找不到所引用的jar的问题。 而抛出的异常也很诡异,有时候会是:<strongclassNotFound</strong,或者<strongNoClassDefineFound</strong, 有时候甚至会是<bXXXcan'tbe
东方客主 东方客主
3年前
Android动态加载基础 ClassLoader工作机制
类加载器ClassLoader早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载。这些插件大多是一些Jar包,而使用插件其实就是动态加载Jar包里的Class进行工作。这其实非常好理解,Java代码都是写在Class里面的,程序运行在虚拟机上
Stella981 Stella981
3年前
Maven项目使用打包时使用本地jar包库
在使用maven管理项目时,有时候我们可能会使用一些第三方的jar包依赖库,但是这些jar包依赖库又没有在共有的maven仓库。通常只能下来放到本项目的lib目录下。但是我们打包时如果不做处理,那么打包后的fatjar中不会有lib文件夹中的相关jar包。打包后无法运行起来,因此需要做特殊处理,让maven打包时能够把使用到外部jar打进去。主要就是在
Stella981 Stella981
3年前
SpringBoot 引入本地或第三方Jar包
在开发过程中,我们会遇到一些Maven仓库没有的Jar包的情况,比如公司其他团队开发的Jar包等。这时我们就不能通过Pom文件引入。这里我们使用hutoolJar为例。一、使用Maven命令把Jar包添加到本地仓库(1)执行maven命令,把Jar添加到本地。mvninstall:installfileDfile/Us
Stella981 Stella981
3年前
Android 在Java代码中设置style属性
在andriod开发中,很大一部分都要与资源打交道,比如说:图片,布局文件,字符串,样式等等。这给我们想要开发一些公共的组件带来很大的困难,因为公共的组件可能更愿意以jar包的形式出现。但是java的jar包中只允许出现java代码而不能出现资源。当我们想要以jar包的形式提供我们自己开发的公共组件时,我们就需要把以代码的形式创建资源。下面提供一个使
Stella981 Stella981
3年前
Android 反编译
一、Apk反编译得到Java源代码下载上述反编译工具包,打开apk2java目录下的dex2jar0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码
Stella981 Stella981
3年前
Eclipse Spring Boot实现热部署
spring为开发者提供了一个名为springbootdevtools的模块来使SpringBoot应用支持热部署,提高开发者的开发效率,无需手动重启SpringBoot应用。devtools的原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更
京东云开发者 京东云开发者
3个月前
实际上手体验maven面对冲突Jar包的加载规则
一、问题背景相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能会存在依赖关系,不同