当前位置: 首页 > news >正文

西宁最好网站建设公司哪家好现在的seo1发布页在哪里

西宁最好网站建设公司哪家好,现在的seo1发布页在哪里,信用网站一体化建设方案,我在wordpress文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…

文章目录

    • 背景
    • 三种修改方式
      • 1.POM中移除原jar中依赖的历史版本
      • 2.原jar它不使用pom依赖而是直接放在源码中再编译
      • 使用JarEditor 插件对源码进行修改(推荐)
      • 使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)
      • 提醒
    • 参考资料-推荐阅读拓展

背景

在新代码中调用的高版本方法但是依赖的历史版本用的低版本,存在调用方法不存在,有可能你编译时通过,但是调用时发现JVM依赖的版本是旧版本,导致调用的新版方法发生异常。例如我下面的这个异常,那么我们就需要调和这种依赖冲突。

java.lang.NoSuchMethodError: 'java.lang.reflect.Field[] org.apache.commons.lang3.reflect.FieldUtils.getAllFields(java.lang.Class)
'
xxxx.core.domain.SplitFields(25)

这种情况通常是我们依赖第三方jar,或者其他团队提供的jar,自身没有源码,或者自己的历史版本源码实在不想动了。

或者我们希望在现有的jar中添加自己的方法,或者修改现有jar中的依赖启动项目,比如历史jar依赖的当前运行环境中的resource中的配置文件,或者特定的文件路径比如d//config,这种如果在centos环境,或者在docer环境根本就无法加载到这些文件路径。因此需要我们手动修改源文件,但是有没有源码的情况下的不得已而为之。

三种修改方式

1.POM中移除原jar中依赖的历史版本

如果原jar使用的pom.xml依赖我们可以使用exclusions排除该依赖,当然也就不需要我们这里提到的修改原jar了

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><exclusion><groupId>com.netflix.ribbon</groupId><artifactId>ribbon</artifactId></exclusion></exclusions></dependency>

2.原jar它不使用pom依赖而是直接放在源码中再编译

这种情况使用上面的排除是没办法的,如下图,org.apache.commons.lang3的源码它给直接合到它的项目中了,而不是使用的依赖pom加载,这种方式,你只能通过本文的方式手工清理这种强依赖。

在这里插入图片描述
方法如下:
使用rar解压工具打开文件,找到对应的org.apache.commons.lang3,直接删除即可
在这里插入图片描述

切换到META-INF\maven下找到
找到对应的commons-lang3直接删除
在这里插入图片描述
如此重新添加到仓库中或者放入项目的lib下面即可解除旧版本的依赖

使用JarEditor 插件对源码进行修改(推荐)

IDE安装完 JarEditor 后,右键点击项目中的 .class 文件,在反编译界面可以切换到 JarEditor 的 tab 页面,方便对 JAR 文件进行编辑。

对于外部 JAR 文件,可以通过 File -> Project Structure -> Libraries -> Add Library 来添加外部 JAR,并在项目视图中对其进行反编译和编辑操作,
如下图我对我遇到的依赖jar中的旧版本代码进行修改增加新版本中新的方法如下,然后保存即可覆盖源jar中的文件

target选择JDK版本8即可;

保存后我们关闭编辑页面,重新双击打开jar中的FieldUtils我们可以看到它已经有我们上面添加的方法代码块了。

在这里插入图片描述

使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)

以上都不行那就只能修改原class了,比如写死的加载路径,或者已经无法再外面满足的配置文件地址等等。

jar解压jar拿到源class先看通用命令

#解压当前文件到当前目录jar -xvf .\MQSDK1.6.1.jar#重新压缩当前路径下的所有文件为 MQSDK1.6.1.jarjar cvfM0 MQSDK1.6.1.jar ./*

比如这里我们看到了,需要修改这个代码rg.git.gr.modules.clm.controller.company.CompanyApplyController

首先创建或者直接使用现有的项目,在src下面新建一个同名同目录的类文件org.git.gr.modules.clm.controller.company.CompanyApplyController目的是编译后后它的包路径和文件名方法名依然和原来一样,不会造成代码冲突和异常
在这里插入图片描述

然后使用java-decompiler反编译工具找到原jar解压路径种对应类,复制里面的内容信息到自己新增的类中,修改新类的源码后重新编译,使用编译后的class文件覆盖原解压的jar中的对应文件。

提醒

以上修改原jar的方式,如果使用的pom加载记得都要修改版本号后提交到仓库中,不然下次拉取可能还是原来的版本内容。

如果使用 外部加载lib的方式则保留好修改后的jar资源就可以了。

参考资料-推荐阅读拓展

告别繁琐反编译:IDEA中轻松反编译与修改Jar包
https://datamining.blog.csdn.net/article/details/142311328

http://www.mmbaike.com/news/90657.html

相关文章:

  • 光辉网站建设公司镇江百度关键词优化
  • 手把手教你做网站 怎么注册域名互联网广告推广是做什么的
  • 重庆网站建设哪个平台好网站推广策划书模板
  • 可信网站是什么网站客服系统
  • 找做网站的公司需要注意什么福州seo建站
  • 东莞做网站那家好网店网络营销策划方案
  • 网站教程分享站长工具在线平台
  • web课程设计网站模版百度客户端登录
  • 国际网站制作南昌seo实用技巧
  • 上海环球金融中心造价网站关键词怎么优化到首页
  • 什么是网站建设与维护网站关键词排名外包
  • vultr 做网站空间小型项目外包网站
  • 做美女网站赚钱巨量引擎广告投放平台代理
  • 做网站还需要买空间吗关键词收录查询工具
  • 商业网站是怎么做的农产品品牌推广方案
  • 深圳网站官网建设方案百中搜
  • 建站公司用的开源框架游戏推广代理加盟
  • 中国采购与招标网官方网站靠谱的代写平台
  • 营销策划与运营培训北京核心词优化市场
  • 网站开发常见毕业设计题目优化百度涨
  • 简洁大气企业网站源码 后台站长之家ip地址归属查询
  • 做网站美工工资多少优化网站搜索
  • 韩国 网站设计百度推广价格表
  • 图文可以做网站设计吗最近的重要新闻
  • 网站地图怎么用汽车软文广告
  • 重新建设网站的请示河北百度推广
  • 邯郸做网站优化教育培训网页设计
  • 个人网站展示广州seo外包
  • 自己做网站开网店实时热搜榜榜单
  • 自己做网站的二维码企业网站优化排名