没有源码的情况下修改jar包中的内容

  记录一下~~

1、首先将jar包解压缩,并使用IDEA打开 

2、在打开的项目中找到需要修改的class文件,在相同位置新增一个同名的java文件,并将class文件中的内容复制到java文件中,之后根据自己的需要更改java文件中的内容。我需要在实体类中增加一个属性testname:

变更前的class文件和java文件如图:

变更后的java文件:

3、在jar包解压缩的目录下新增lib文件夹,并将编译当前java文件需要的依赖放入lib中

4、在项目根目录下打开命令窗口,输入命令:javac -cp ./lib/* 当前编译j的ava文件路径,成功之后同名的class文件中的内容将与java中的内容保持一致。

变更后的class文件:

5、最后将项目中的class文件替换jar包中class文件就可以了。

过程中遇到的问题:

问题1:编码GBK的不可映射字符 

原因:这是无法编译汉字引起的,只需要在编译的时候指定字符编码为utf-8即可,例如:

javac -cp ./lib/* -encoding utf-8 当前编译j的ava文件路径

问题2:使用或覆盖了已过时的 API。注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

原因:这个问题是因为当前使用的jdk版本和源码用的版本不一致,有些用法不支持,可以通过:javac -cp ./lib/* -Xlint:deprecation 当前编译j的ava文件路径   查询出错的位置。

问题3:使用了未经检查或不安全的操作。注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

原因:代码中有些写法不符合规范,校正写法之后重新编译即可,

可以通过:javac -cp ./lib/* -Xlint:unchecked 当前编译j的ava文件路径  详细查看。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值