jar包替换类

转载 2012年03月30日 23:40:55

在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供详细的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很详细,这对我们使用就非常不方便。
   有道是,知其然才知其所以然。有时候,我们必须读取jar里的打包的类。而有时还有可能要对它进行小量修改,使之适用于自己的特殊需求。
  前期准备
   Java反编译工具:
   强烈推荐,小颖JAVA源代码反编译系列专家1.4终极版。
   压缩工具:
   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达到我们的目的。
  6. Jar打包
   将修改生成后的class文件,替换我们将jar解压缩目录下的相应class文件,重新打包生成jar。
   我们可以使用jar命令进行打包,也可以使用winrar工具进行打包。使用winrar工具打包时,要注意选择压缩文件格式为zip,并将生成的压缩包文件的后缀名设置为jar。
   替换原来的jar。再进行最后一次测试。
  总结
   由于Java的跨平台性,使得java的class文件可以进行反编译,我们可以对jar文件进行修改,使之适用于自己的需求。
   对jar文件进行修改,我们必须首先获得jar开发者的同意。
   对jar文件进行修改,首先必须对反编译的java文件比较熟悉。这就必须有良好的代码阅读能力,清楚作者的技术架构和开发设计思想。如果没有把握,最好能与jar开发者联系,提出你的需求。
   对于某些java开发者来说,并不希望将自己辛辛苦苦写的code公布于众,为了避免他人反编译,可以使用混淆器,但也只是增加代码阅读的困难性。如果不是作为商业运用,我们还是希望开发者能够提供源代码,互相学习探讨。

 

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

相关文章推荐

覆盖jar 类 优先级高于jar == Debug jar包 java技巧

在项目中经常用到jar包 但是 jar中的文件 类 都是封装死的  没有办法 Debug  本文 说的是 Debug jar包中的类 和 修改jar包中的配置等 在项目中  相同路径下的 形...
  • x_zcl
  • x_zcl
  • 2016年03月17日 17:48
  • 2173

怎样更新jar包中的某个class文件??

很简单呀~~ jar   -cvf   aaa.jar   test\ttt.class 就可以了。 aaa.jar       |_____test       |       ...

热替换jar包导致JVM崩溃(crash)

情景 在一次项目升级过程中,需要替换一个jar包,已经有进程用这个jar包启动运行了。 操作 当没有终止这些进程的情况下,热替换该jar包 现象 替换jar包之后,在运行的进程全部消失了,打...
  • jgteng
  • jgteng
  • 2017年03月17日 18:10
  • 423

替换jar包指定的文件

替换jar 包下面的class 文件,很多人会想到直接用winrar 打开替换,在一般的情况下, 是可行的,但是如果说这个jar 的代码经过混淆后,会有大小写不同,文件名是相同的,在windos...
  • giianhui
  • giianhui
  • 2013年08月19日 21:03
  • 16481

java查找重复类/jar包/普通文件

简单易用查找重复java类文件工具

运用URLClassLoader加载外部jar包的java类,生成Class文件

先来一段网上copy的话术:       //**************************** 很多时候 我们写的java程序是分模块的,有很好的扩展机制,即我们可以为我们自己的java类...

对象转换为json串的类,没有引用其他的jar包,可以直接使用

//下面的这个类就是用来把对象转换为json串的类,没有反向的操作。因为这里的包没有引用其他的jar包,可以直接使用。 import java.beans.IntrospectionExceptio...

导入某些特殊Jar包中的类

导入特殊jar设置 在通常的开发中可能会去看下API的源代码,自己有时候也可以模仿API中的源代码做一些研究,可是有些特殊jar包中的类报无法导入的错误: The import sun.misc....

tomcat类加载器找不到jar包中的类问题分析与解决思路

在这篇博文中java动态加载指定的类或者jar包反射调用其方法,介绍动态加载指定的类,当时我是拿URLClassLoader介绍的,当然可以自定义一个ClassLoader重写对应的方法, 不过这...

Java运行时动态加载类之ClassLoader加载class及其依赖jar包

需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader。 1、xml配置文件 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jar包替换类
举报原因:
原因补充:

(最多只允许输入30个字)