| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> java修改第三方jar包中的代码 -> 正文阅读 |
|
[Java知识库]java修改第三方jar包中的代码 |
修改jar包源码今天在学习java的sychronized偏向锁的时候,看了一篇视频教程 https://www.bilibili.com/video/BV16J411h7Rd?p=83&spm_id_from=pageDriver 教程中老师引用了一个第三方的jar包(jol-core),maven坐标如下,来打印锁对象的Mark Word字节码,从而更直观察地多线程下加偏向锁的情况。
这些都是挺常规的操作,接着老师的骚操作来了,扩展了jar包里面的方法。弹幕里面都是惊呼声,老师改了jar包,我们学习者没法复现了呀。 我寻思是不是用了动态代理啥的做的,可是一看他调用的方法是 抱着刨根问底的心态,我尝试去下载源码查看ClassLayout.toPrintable()这个方法,代码大概100多行的样子,就是基于这个方法扩展一个toprintableSimple()方法,然后重新编译项目,找到ClassLayout.class字节码,然后把这个文件去替换官方jar包中的这个类,再去项目里面一刷新,最后一运行,nice搞定,跟老师的一样炫酷。 下面我把这个改官方jar包代码的骚操作告诉你,分为以下几个步骤: 一、实现步骤1. 下载对应jar包的源码在idea右侧maven导航栏里面找到对应的依赖项,然后右键下载源代码 2. 解压源码然后导入到idea里面在左侧项目的外部库下面展开对应jar包,然后右键选打开于Explorer 在系统文件浏览器里面再用压缩工具解压源代码 打开解压后的目录跟我们平时看到的maven项目不太一样,这是因为打成jar包以后,文件目录会变 去idea新建一个项目,就跟这个文件夹同名好了
刷新maven项目 这里如果编译代码的话会报一个错误,提示sun.misc不存在,经过搜索资料得知是jdk版本过高导致的,在项目结构里面改成jdk 8即可 3. 修改源代码编辑 先按 我们参考着写
按 4. 替换jar包中的对应的class文件项目重新编译后,去target目录下,找到 然后去之前的项目中试着调用 二. 导出jar包如果不想污染官方的jar包,也可以自己导出jar包,具体方法很简单,去idea右侧maven导航栏的项目的生命周期里面 注:1. 需要把pom.xml中的java-doc和license的plugin注释掉,否则会报错; 2.需要把在pom.xml中指定version,否则会覆盖官方的jar包 打包后,去maven仓库查看 尝试在项目中引入,不报错且能正常运行 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:33:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |