怎样替换jar包的指定文件
在做(或修改别人的)项目的时候,可能遇到要修改调用的的jar包内的类属性或方法的问题。在eclipse或是其他的IDE中是无法直接修改的,所以需要一个解压jar-->修改文件-->编译-->打包成jar文件的过程,下面简要的记录下我是如何做的:
1.将工程中的jar文件拷出来,用解压工具解压得到对应的文件;
2.在文件中找到要修改的class文件,将class文件拷出来,用反编译软件反编译一下得到Java文件;(如果包含.java文件就简单了,直接拷贝出.java文件就好了);
3.在eclipse上新建一个工程(工程的目录结构与jar中的一致),再新建一个类文件(类名与要修改的类名一致),把(2)中得到的.java文件的内容拷贝进去
4.这时候可能会报很多错误,因为该类中可能引用了一些其他的包还没有包含进来,根据报错的情况,找到缺少的jar包(原工程中包含这些jar包,可以把原工程的的jar包都拷
       过来),拷贝到工程的libs目录下,然后build-path引用到的jar包;
5.这个时候工程不报错了,你可以开始修改该文件了,修改完成之后,按ctr+s保存,就编译完成了,到工程的bin目录下把新生成的.class文件拷出来,替换掉原jar包解压后的文件中要修改的class文件
6.在cd 到解压文件所在目录,通过jar cvf XXX.jar XXX 其中XXX.jar为要打包成的jar文件名 XXX为待打包的文件
打包完成
7.完成之后,就可以当前的目录下找到新生成的jar包了,把它拷贝到原工程中替换掉原来的jar包,这样就大功告成了;
怎样替换jar包的指定文件的更多相关文章
- 加载所有jar包下指定文件
		
加载所有jar包下指定文件: 如spring中加载 META-INF/spring.handlers 加载 org.springframework.core.io.support.Properties ...
 - 替换Jar包内的文件
		
要替换Jar包内的文件可以用以下命令实现: jar uvf myjar.jar com/test/myclass.class 这里值得注意的是 myclass.class 必须放在com/test ...
 - 替换jar包内指定的文件
		
用Java jar 工具来替换. ① jar uvf test.jar test.class 把test.class 直接添加到jar包的根目录,也就是替换到根目录文件. ②jar uvf test. ...
 - 替换jar中的指定文件
		
 替换jar 包下面的class 文件,很多人会想到直接用winrar 打开替换,在一般的情况下, 是可行的,但是如果说这个jar 的代码经过混淆后,会有大小写不同,文件名是相同的,在windos ...
 - 怎么替换jar包里面的文件?
		
很多时候,我们需要替换包含在jar包里面的文件,例如修改里面的配置文件. 由于jar包已经生成,在不想重新用eclipse导出的情况下,我们怎么修改jar包里面的文件呢? 其实说出来很简单,可以使用以 ...
 - Web项目替换jar包中的文件的方法
		
经常遇到这样的问题,需要修改jar包中的方法.应该如何做? 1.有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了. ...
 - Java 操作jar包工具类以及如何快速修改Jar包里的文件内容
		
需求背景:写了一个实时读取日志文件以及监控的小程序,打包成了Jar包可执行文件,通过我们的web主系统上传到各个服务器,然后调用ssh命令执行.每次上传前都要通过解压缩软件修改或者替换里面的配置文件, ...
 - Java如何快速修改Jar包里的文件内容
		
需求背景:写了一个实时读取日志文件以及监控的小程序,打包成了Jar包可执行文件,通过我们的web主系统上传到各个服务器,然后调用ssh命令执行.每次上传前都要通过解压缩软件修改或者替换里面的配置文件, ...
 - 替换Jar包里文件
		
jar uvf test.jar com/test/test.class 这里值得注意的是 test.class 必须放在com/test 文件下,要和jar的路径对应起来.不然会说 没有这个文件或 ...
 
随机推荐
- hdu 1503 最长公共子序列
			
/* 给两个串a,b.输出一个最短的串(含等于a的子序列且含等于b的子序列) */ #include <iostream> #include <cstdio> #include ...
 - 【HDOJ5556】Land of Farms(最大团)
			
题意:给定n*m的网格图,上面只有字符'.' 和 数字0-9.其中数字表示这是该格是古老的土地,字符'.'表示该格只是普通的土地. 可以认为一块古老的农田由四联通的所有数字相同的格组成的块,一块普通的 ...
 - ef code first transform,add ef power tools add-in,add tangible t4 editor for enhancement.
			
use ef power tools, as to .edmx file,right click at view, choose generate database from model, then ...
 - 转 c++多线程编程
			
c++多线程编程 一直对多线程编程这一块很陌生,决定花一点时间整理一下. os:ubuntu 10.04 c++ 1.最基础,进程同时创建5个线程,各自调用同一个函数 #include <io ...
 - LeetCode OJ-- Recover Binary Search Tree ***@
			
https://oj.leetcode.com/problems/recover-binary-search-tree/ 一棵二叉搜索树,二叉搜索树的特征是,中根遍历的话,得到的序列是递增的 题目中, ...
 - Android中节操播放器JieCaoVideoPlayer使用
			
效果 使用 即便是自定义UI,或者对Library有过修改,也是这五步骤来使用播放器. 1.添加类库 compile 'cn.jzvd:jiaozivideoplayer:6.0.0' 2.添加布局 ...
 - react native windows create  bundle folder
			
生成bundle 文件 命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-out ...
 - HDU 5727.Necklace-二分图匹配匈牙利
			
好久没写过博客了,把以前的博客补一下. Necklace Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
 - 【mybatis】从一个错误,看mybatis中的#和$的区别
			
事情的发展是这样的: 因为一个需求,需要在java中拼接出一个完整的sql语句,然后将整条sql语句传递给mybatis执行. mapper.java是这样的: int insertMaster(Wo ...
 - 【spring boot logback】日志logback格式解析
			
日志logback格式解析 logback官网 格式解析 https://logback.qos.ch/manual/layouts.html#ClassicPatternLayout 官网格式解析有 ...