jar 更新 jar包内的 class,以及如何修改class

news2024/10/6 8:22:44

一、提取Jar 内文件

#提取jar内的配置文件
 jar -xvf a.jar META-INF\plugin.xml
 -已解压: META-INF/plugin.xml
 #提取jar内的class文件, 提示:反编译为java文件,修改后再使用javac xxx.java编译为class,
 jar -xvf a.jar io.config.**.abc.class
 -已解压: io.config.**.abc.class

注:更新到 Jar文件内,需要保持.java文件 目录结构与 Jar包内一致。

二、更新jar内的资源
文件路径与Jar包内保持一致

#更新a.jar包下的 META-INF\plugin.xml
jar -uvf a.jar META-INF\plugin.xml  
#更新a.jar包下的  io.config.**.abc.class 
jar -uvf a.jar io\...\abc.class

jar -xvf 解压出来如下,修改文件, 执行 jar -uvf 更新命令 即可。
-在这里插入图片描述

二、代码直接修改Jar包内的Class,(这种方式要明确知道自己在干什么)
随便一个java工程引入

  1. maven引入javassist
<!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
                <dependency>
                        <groupId>org.javassist</groupId>
                        <artifactId>javassist</artifactId>
                        <version>3.21.0-GA</version>
                </dependency>
  1. java代码执行修改
    public static void main(String[] args) {
        try {
            ClassPool pool = ClassPool.getDefault();
         	//需要修改的jar包
	        pool.insertClassPath("C:\\Users\\Administrator\\a.jar");
	        //获取到class
	        CtClass driverclass = pool.get("io.github.plugin.cofig.xxxxxxclass"); 
	        //获取class内声明的方法,更改里面的内容
	        driverclass.getDeclaredMethod("getMsg").setBody("return false;");
	        //将此修改的Class输出至目录中
	        driverclass.writeFile("D:\\javassistout");
        } catch (NotFoundException e) {
            throw new RuntimeException(e);
        } catch (CannotCompileException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }	

详解:
jar 命令有生成、查看、更新、解开 jar 包的作用,包含 META-INF/MANIFEST.MF 文件。它是 jar 包生成的时候,自动创建的,主要负责制定 jar 包的 main 文件位置和当前文件夹。

参数可选项:
-x 解压已归档的指定(或所有)文件

-v 在标准输出中生成详细输出

-f 指定归档文件名

-c 创建新的归档文件

-u 更新现有的归档文件

-t 列出归档目录

-m 包含指定清单文件中的清单信息

-e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点

-o 仅存储,不使用任何 zip 压缩

-i 为指定的 jar 文件生成索引信息

-M 不创建条目的清单文件

-C 更改为指定的目录并包含其中的文件

附(参考):
破解某某IDEA插件
替换jar包中的class文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三维测量技术在高端精密制造中的应用

科技创新是新时代的重要发展动力。三维测量技术以精密机械为基础&#xff0c;综合应用了电子技术、计算机技术、光学技术和数控技术等先进技术&#xff0c;可以对机械、汽车、航空、家具、工具原型等测量出高精度的几何零部件以及测量复杂形状的机械零部件&#xff0c;给各行业…

Autosar IOC机制(核间通信)

文章目录 一、IOC二、诊断代码实例一、IOC IOC和操作系统紧密相关,是操作系统实现的一部分 ①ECU间通信:通过通信协议栈定义好的API进行通信,通俗来讲就是通过总线(CAN/LIN/Flexlay)进行通信。 ②OS-Application内SWC间的通信:通过RTE处理。 ③OS-Application间的通信:通信…

【iOS】自定义字体

文章目录 前言一、下载字体二、添加字体三、检查字体四、使用字体 前言 在设计App的过程中我们常常会想办法去让我们的界面变得美观&#xff0c;使用好看的字体是我们美化界面的一个方法。接下来笔者将会讲解App中添加自定义字体 一、下载字体 我们要使用自定义字体&#x…

JQuery全部过滤选择器详细介绍下

文章目录 JQuery全部过滤选择器详细介绍-下属性过滤选择器● 属性过滤选择器-应用实例代码演示 子元素过滤选择器● 子元素过滤选择器基本介绍5. nth-child() 选择器详解如下&#xff1a;● 子元素过滤选择器示例-应用实例代码演示 表单属性过滤选择器● 此选择器主要对所选择的…

壹牛NFT数字艺术藏品数藏系统源码 全开源

这套源码小白大致测试了一下发现几点问题&#xff0c;uniapp少了几个文件不能编译只能用public/h5里面web端,后台账号密码似乎不正确&#xff0c;这类源码挺少的感兴趣的自己下来研究修复一下吧。 壹牛NFT数字艺术藏品数藏系统源码 全开源 这个版本新增了不少功能&#xff0c…

动态规划入门第2课,经典DP问题1 --- 线性

动态规划要点 阶段的2个方向&#xff1a;从上到下&#xff1b;从下到上。 动态规划要点 从递归到DP 动态规划要点 两个2个方向 优化的可能性 第1题 合唱队形 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形…

Apple M1 Pro macOS 切换中文输入法卡住

(macOS 在切换中文输入法时出现卡住的情况 1&#xff0c;切换为中文输入法后再次卡住2&#xff0c;杀死 简体中文输入方式的进程参考 将光标移到菜单栏的输入法切换为英文输入法 多次切换为英文输入法&#xff0c;可以切换为英文输入法 切换为英文输入法后电脑不卡顿了&#xf…

基于springboot+jpa+mysql+html网上商城系统

基于springbootjpamysqlhtml网上商城系统 一、系统介绍二、功能展示1.主页(客户)2.登陆&#xff08;客户&#xff09;3.注册&#xff08;客户&#xff09;4.购物车(客户)5.我的订单&#xff08;客户&#xff09;6.用户管理&#xff08;管理员&#xff09;7.分类管理&#xff08…

iOS--编译链接的过_1

iOS 开发中使用的是编译语言&#xff0c;所谓编译语言是在执行的时候&#xff0c;必须先通过编译器生成机器码&#xff0c;机器码可以直接在CPU上执行&#xff0c;所以执行效率较高&#xff0c;是使用 Clang / LLVM 来编译的。LLVM是一个模块化和可重用的编译器和工具链技术的集…

Java基本数据类型默认初始化值测试

1.基本数据类型为成员变量 public class Test {boolean b;char c;byte bt;short s;int i;long l;float f;double d;public static void main(String[] args) {Test t new Test();System.out.println("boolean类型默认值&#xff1a;" t.b);System.out.println(t.c…

Android 中 cgroup抽象层详解

源码基于&#xff1a;Android R 0. 前言 在之前的博文《Android中app freezer原理》一文中&#xff0c;我们看到冻结器的enable、freeze、unfreeze 都是通过 cgroup 的机制进行处理。 本文将介绍下 Android 中 cgroup 的抽象层基本信息和使用方式。 1. cgroups 简介 cgroups…

Linux常用命令——dump命令

在线Linux命令查询工具 dump 用于备份ext2或者ext3文件系统 补充说明 dump命令用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备&#xff0c;或备份成一个大文件。 语法 dump(选项)(参数)选项 -0123456789&#xff1a;备份的层级&#xff1b; -b&…

layui框架学习(32:表单)

Layui中的分页模块laypage支持在指定的容器中显示分页信息&#xff0c;主要是指总页数、当前页面、上一页/下一页等信息&#xff0c;可以配合其它组件实现分页显示数据或者分页显示内容&#xff0c;事实上&#xff0c;Layui中的动态数据表格等模块都附带有显示分页功能。laypag…

hive之文件格式与压缩

hive文件格式&#xff1a; 概述&#xff1a; 为Hive表中的数据选择一个合适的文件格式&#xff0c;对提高查询性能的提高是十分有益的。Hive表数据的存储格式&#xff0c;可以选择text file、orc、parquet、sequence file等。 文本文件&#xff1a; 文本文件就是txt文件&…

【算法 -- LeetCode】(025) K 个一组翻转链表

1、题目 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点…

企业服务器数据库中了360后缀勒索病毒怎么解决加密的方式有哪些

随着网络安全问题日益突出&#xff0c;企业服务器数据库成为黑客攻击的重要目标之一。近日&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器数据库遭到了360后缀的勒索病毒攻击&#xff0c;导致企业内部的许多重要数据被加密无法读取使用&#xff0c;严重影响了企业…

05网络模型练习题

新版MATLAB中&#xff0c;图论工具箱的函数进行了更换 MATLAB中文参考文档&#xff1a;https://ww2.mathworks.cn/help/matlab/index.html 遍历、最短路径和循环 bfsearch 广度优先图搜索 dfsearch 深度优先图搜索 shortestpath 两个单一节点之间的最短路径 shortestpathtree …

Flask 笔记

Flask 笔记 一、Flask介绍 1、学习Flask框架的原因 2020 Python 开发者调查结果显示Flask和Django是Python Web开发使用的最主要的两个框架。 2、Flask介绍 ​ Flask诞生于2010年&#xff0c;是Armin ronacher用Python 语言基于Werkzeug工具箱编写的轻量级Web开发框架。 ​…

企业数字化转型要转什么?怎么转?_光点科技

随着科技的飞速发展和互联网的普及&#xff0c;数字化转型已成为现代企业持续发展和提高竞争力的必经之路。数字化转型是指企业在信息技术的驱动下&#xff0c;将传统的业务模式、流程和文化进行全面优化和改造&#xff0c;以适应数字化时代的新要求。 一、企业数字化转型的重要…

二极管常见参数

写在前面&#xff1a; 本文章旨在总结备份、方便以后查询&#xff0c;由于是个人总结&#xff0c;如有不对&#xff0c;欢迎指正&#xff1b;另外&#xff0c;内容大部分来自网络、书籍、和各类手册&#xff0c;如若侵权请告知&#xff0c;马上删帖致歉。 目录 肖特基二极管PN…