首页 > 其他分享 >[JDK] 底层大法之替换JAR包中的class文件 [转载]

[JDK] 底层大法之替换JAR包中的class文件 [转载]

时间:2023-12-28 16:14:52浏览次数:43  
标签:包中 JDK JAR jar 替换 xxxdemo 源码 class

0 序

  • 背景

近期跟踪一个第三方组件skywalking针对spring cloud gatewaytraceId丢失问题,需要对 skywalking 内部组件类进行跟踪,需要在其组件源码内部添加一些观察代码,做以增强

  • Q1: 我没有 thrid-party.jar 的源码————故直接在源码上修改,然后打包(此法行不通)
  • Q2: 反编译出的源码,依赖了第三方社区(skywalking)内部的jar或者文件,解决不了依赖问题就无法打包(为了解决问题1只好对thrid-party.jar逆向工程,比如JD-GUI
    以上问题阻挠重新打JAR包。
  • 本方法的效果

本文章的方法,是Java语言的底层大法。在很多极端情况下,此法能解决相当重要的棘手问题。

  • 如下是操作过程(转载自参考文献

1 操作过程

Step1 将jar包和将要替换的class文件放到同一目录下

Step2 查找jar包中xxxdemo.class文件所在的具体路径

  • 命令如下:
jar -tvf xxxdemo.jar | grep xxxdemo.class

xxxdemo根据自己的jar包和类名替换

  • 复制路径备用

Step3 将xxxdemo.jar中指定的xxxdemo.class解压出来

jar -xvf cas_client_all.jar  com/baosight/buapx/security/filter/BuapxSecurityFilter.class

解压后如下:

Step4 将增强后的xxxdemo.class类 到com包下替换掉原来的类

Step5 将替换后的xxxdemo.class打进xxxdemo.jar中

命令:

jar -uvf cas_client_all.jar com/baosight/buapx/security/filter/BuapxSecurityFilter.class

  • 替换后的效果:

使用JD-GUI 反编译工具 打开JAR包

X 参考文献

标签:包中,JDK,JAR,jar,替换,xxxdemo,源码,class
From: https://www.cnblogs.com/johnnyzen/p/17932897.html

相关文章

  • JDK、Tomcat、Redis、MySQL集齐,教你如何搭建高效性能测试项目
    前言:作为一个软件工程师,怎能不知道如何搭建一个性能测试项目呢?性能测试是一个软件工程师不可或缺的一环,因为一款软件性能好坏直接关系到用户体验,而用户体验又是一个软件能否成功的最重要的因素。本文将带你一步步搭建一个性能测试项目,包括如何搭建JDK、Tomcat、Redis和数据库,并......
  • centos安装JDK11
    (一)建立目录mkdir/home/jdk11(二)上传JDK的离线liunx包cd/home/jdk11示例:jdk-11.0.19_linux-x64_bin.tar.gz(三)解压上传JDK的离线liunx包tar-zxvfjdk-8u351-linux-x64.tar.gz(四)配置JDK环境变量vim/etc/profile或者vi/etc/profileexportJAVA_HOM......
  • 手把手从安装本地虚拟机,基于docker,部署springboot+vue项目(若依框架前后端分离版本演示
    目录1.安装本地虚拟机centos2.安装docker,拉取镜像,创建容器3.打包部署后端4.配置nginx5.打包部署前端6.常见问题汇总1.安装本地虚拟机centos部署环境提供vm16,和centos7,其中把镜像改成.iso文件就可以了阿里云链接:https://www.alipan.com/s/BTnpjuHWtEp为什么用阿里云,不限速啊,秉......
  • openjdk源码-java是如何执行shell命令的
    一般我们在java中调用shell脚本的方式如下publicintexecuteLinuxCmd(Stringcmd){LOGGER.info("cmd:{}",cmd);Runtimerun=Runtime.getRuntime();try{Processprocess=run.exec(cmd);InputStreamin=proce......
  • JDK1.8安装
    #!/bin/bash###############################################################FileName:install_redis.sh#Version:V1.0#Author:junwang#Organization:#CreatedTime:2021-04-1517:12:54#Description:###############################################......
  • 1、jdk与jre的区别
    一、JDK--Java开发工具包,由2部分组成第一部分是java开发工具集和java类库第二部分是JRE二、JRE--java运行时环境由2部分组成 第一部分是java运行时类型            第二部分是JVM[java虚拟机JDK可以开发java程序,也可以运行java程序JRE只能运行jav......
  • Mac安装JDK1.8
    官网https://www.oracle.com/java/technologies/downloads/#java8-mac下载需要Oracle帐号安装点击安装一直下一步安装成功配置系统环境变量JDK主目录:/Library/Java/JavaVirtualMachinesJDK真实目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Homeopen~/.bash_......
  • maven 引入外部jar包
    有时依赖的第三方jar不在maven仓库中,为了能按照maven的方式管理jar同时方便成员间协同,可使用如下方式在pom.xml同级目录下新建lib文件夹,然后将jar放入,然后纳入版本管理在pom.xml中配置依赖,比如<dependency><groupId>com.group</groupId><artifactId>arti......
  • Maven打包插件之——maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin
    转载自:https://blog.csdn.net/calm_encode/article/details/1039315371.打包插件的介绍   打包插件是把class文件,配置文件打包成一个jar(war或者其他格式)的包。而且可执行jar包中包含或者不包含相应的依赖包包,当不包含相应的依赖包时,我们需要建立lib目录,且jar和lib目......
  • Maven uber-jar(带依赖的打包插件)maven-shade-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128832989文章目录最基础的maven-shade-plugin使用生成可执行的Jar包和常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对maven-shade-plugin常用配置的介绍,更详细的学习......