精华内容
下载资源
问答
  • 在某Java Application中,所引用的lib下的某jar包,知道其源码,怎样修改其源码,然后将项目中的jar包替换为修改后的jar包。 注: 博客主页:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿...

    场景

    在某Java Application中,所引用的lib下的某jar包,知道其源码,怎样修改其源码,然后将项目中的jar包替换为修改后的jar包。

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    如下图

     

    下面项目所引用的jar包的源码项目在上面,怎样修改上面的源码并将下面的jar包替换。

    首先找打上面源码中要修改的地方,这里添加了一行日志的输出

     

    然后在此源码项目上右击-Export,将其导出为jar包,如果此源码没有引用其它第三方的jar包,则将其直接导出为jar包即可。

    如果有引用的第三方的jar包,除了添加配置文件的方式,还可以使用Fat jar插件打包。

    Eclipse安装低版本4.3并安装FatJar打包插件来打包引用第三方jar包的项目成jar包:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110123747

    可以参照如上教程。

    打包成功后直接将lib下的jar包替换即可。

    那么就能在修改源码后看到输出修改后的内容。

     

     

    展开全文
  • 如何修改jar包里文件

    万次阅读 2018-07-27 16:02:32
    之前也曾遇到过修改jar包文件的问题,但是在解决之后没有把解决方法记录下来,今天有再一次遇到此类问题,在...修改中圈起来的jar中的一个文件,文件路径为:catalina.jar\org\apache\catalina\util,例如下中...

           之前也曾遇到过修改jar包文件的问题,但是在解决之后没有把解决方法记录下来,今天有再一次遇到此类问题,在网上找到很多解决的例子,但是都是比较麻烦的。

           在这里,我就以修改Tomcat中的一个jar文件为例:

     

     

     

     

    修改图中圈起来的jar中的一个文件,文件路径为:catalina.jar\org\apache\catalina\util,例如下图中圈起来的文件

    修改方法:

    首先把jar文件解压;

    然后找到要修改的文件,用记事本或其他的编辑器打开,并在需要修改的地方进行修改;

    保存文件,把解压出来的文件重新压缩打包;

    把压缩包的后缀改为.jar。

    展开全文
  • 前言 最近帮助同事解决了一个比较棘手问题,一路采坑过程比较有意思。...调试发现H5使用原有协议格式调用新协议,无法触发业务侧native注册新协议日志和断点。 怀疑原有协议格式问题,当.

    hi,2021

    前言

    最近帮助同事解决了一个比较棘手的问题,一路采坑的过程比较有意思。在此记录下来。(PS:主要原因是项目比较大,我们只有整个Android项目部分业务侧代码的开发权限。所以解决问题的一些解决问题的常规手段无法使用。)

    问题

    需求:Web页面中H5native交互,保存base64图片

    问题:使用现有的已经封装好的Hybrid协议,在最后集成测试发现部分手机无法保存成功。

    • 调试发现H5中使用原有的协议格式调用新协议,无法触发业务侧native注册的新协议的日志和断点。
    1. 怀疑原有的协议格式问题,当H5使用原有协议格式调用线上已经存在的新协议发现native可以端调用成功,此问题排除;
    2. 怀疑新协议中的参数问题,H5去掉新协议中的参数发现可以调用到native新协议实现。猜测可能是协议参数导致出的问题;
      1. 通过断点找到触发协议调用的地方,也就是H5native数据通信的地方。发现目前Hybrid协议使用的是native端复写onJsPrompt方法,拦截JavaScriptprompt()方法。
      2. 将新协议参数改回来,再次调用。断点在native端复写onJsPrompt方法中发现传输的数据被截断,数据解析失败无法进行下一个转发到业务测。

    问题点

    项目中原有的Hybrid协议使用的复写prompt方法作为通信的桥梁,现在遇到了**发大洪水(较大的数据)**出现了阻碍问题。

    解决方案选择

    1. H5base64格式的图片改为http格式图片;

      图片本就是H5绘制出来的,再上传之后客户端再下载交互体验太差;

    2. 我们业务侧实现自已一套的Hybrid协议;

    3. 让项目的基础架构部修改现有的Hybrid协议;

      晚上发现的bug,明天就需要封测。24小时之内想要完成跨部门的基础架构的改动,很难实现。

    最后我们选择的是第二种方案,自己实现一套Hybrid协议。

    解决方案实现

    1. 拿到WebView 调用addJavascriptInterface方法给H5环境下添加JS对象。
    2. 开发JS工具让其能按照老协议格式,调用到新的JS通信方法。
    3. 将拿到的数据解析抛给原来在onJsPrompt方法中处理数据的包装类对象。

    如果所有的项目代码我们都能改动,那么这个解决方案也就没有难点。难点在于我们现在只有这个H5页面的最外层的一个壳Activity,而且封装的WebView没有为对外暴露我们想要的方法。所以方案的第三步执行产生了问题。

    针对这个问题我们有两个解决方案:

    Hybrid-Base64-project.jpg

    1. 本次通过注入JS对象的Hybrid通信协议和项目原有的Hybrid协议做两套逻辑;
    2. 通过多次hook黑科技调用到原有其他类中的dispatch方法;

    如果仅仅是这样也就没有本篇文章了。

    好了,啰嗦了这么久了终于开始进入正题了。不知道还有几个同学打算继续看下去。

    我们可以拿到项目中所有的AAR文件,想着是否能通过修改源代码使之提供我们想要的API,然后通过升级 AAR版本解决问题。好了本文的重点已经出来了修改AAR中class文件

    修改AAR中class文件

    方案一

    先把AAR中的想要修改的class删除,重新打包为新的AAR。项目依赖新版本AAR,然后在项目对应的包下创建一个相同的类。

    1. 将原有的class文件内容反编译之后拷贝到新建的类中,直接运行。
    2. 将原有的class文件内容反编译之后拷贝到新建的类中。最后重新编译生成的class再添加到AAR中重新打包生成新的AAR

    如果类被混淆过的,那么这个方案基本废掉了。因为反编译出的class的内容里面存在大量包和类名相同的情况,这个再编译期间无法确认本次调用时使用的类还是包。

    举个例子,混淆之后经常看到下面的结构。

    com.xx.a
    com.xx.a.a
    

    在写下面代码的时候会提示类a下没有类a,而不是去包a下找类a

    a ma = new com.xx.a.a();
    

    方案二

    aop-asm.JPEG

    根据上图就可以看出这个方案是进行切面编程。我们仅仅需要在某个类中添加一两个方法,去解决访问受限的问题。考虑到当前这个问题的难易程度我们选择Javassist。因为Javassist源代码级APIASM中实际的字节码操作更容易使用,无需深入了解JVM规范也能使用。

    Javassist 官方文档

    jar包下载地址 Github:javassist

    //需要添加的方法
    //public void executeJSCmd(String var1) {
    //    if (this.mActionDispatcher != null) {
    //        Message var2 = this.mActionHandler.obtainMessage(0);
    //        var2.obj = var1;
    //        this.mActionHandler.sendMessage(var2);
    //    }
    //}
    //需要操作的class的类名:com.xxx.android.web.webview.BaseWebChromeClient
    public class Test {
        public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {
            ClassPool classPool = ClassPool.getDefault();
            // 必须将class文件放在这个工程编译后的class文件中,路径也对应起来
            CtClass ctClass = classPool.get("com.xxx.android.web.webview.BaseWebChromeClient");
            CtMethod newmethod = CtNewMethod.make("public void executeJSCmd(String message) { if (this.mActionDispatcher != null) { android.os.Message msg = this.mActionHandler.obtainMessage(0); msg.obj = message; this.mActionHandler.sendMessage(msg); } }",ctClass);
            ctClass.addMethod(newmethod);
            ctClass.writeFile();
        }
    }
    

    需要注意的是,比如我们添加的方法中涉及到了其他的类需要写全路径android.os.Message,而且这个类相关的jar包也必须添加到运行环境中(也可以将这个类的class文件放着这个工程编译后的class文件目录中),否则执行时候会报一下的错误。

    Exception in thread "main" javassist.CannotCompileException: [source error] no such class: android.os.Message
    	at javassist.CtNewMethod.make(CtNewMethod.java:78)
    	at javassist.CtNewMethod.make(CtNewMethod.java:44)
    	at com.test.pattern.Test.main(Test.java:13)
    

    注意点

    替换或者删除jar中的class的时候最好不要解压然后再使用命名打包,我自己在Max电脑上使用命令打jar包的时候会有一个.DS_Store文件。我使用的BetterZip压缩&解压工具,在不解压的情况下进行jar包中的class添加和删除操作非常方便。

    文章到这里就全部讲述完啦,若有其他需要交流的可以留言哦

    想阅读作者的更多文章,可以查看我 个人博客 和公共号:
    振兴书城

    展开全文
  • 如何修改jar

    2016-01-18 09:18:56
    场景:项目依赖某个jar包中有2个class文件需要修改,并需要重新打成jar包~ 网上看了下其他人做法,自己一时省力是这么做:~ 1. 用jd-gui工具打开jar包,保存成rar格式,解压出来就是java文件,直接...

    场景:项目中依赖的某个jar包中有2个class文件需要修改,并需要重新打成jar包~

    网上看了下其他人的做法,自己图一时省力是这么做的:~

    1. 用jd-gui工具打开jar包,保存成rar格式,解压出来就是java文件,直接修改;

    2. 因为要修改的类文件依赖其他类,不方便单个编译,所以其整个java目录放到eclipse中(建个package),确保不报红,编译ok就行了,

    3. 将那2个java文件对应的class 拖到rar中替换原来的那2个class文件,ok了

    展开全文
  • 场景一:图片尺寸不变,修改图片文件类型使用:Thumbnails.of("F:\\image\\IMG_20131229_114806.png").scale(1f).outputFormat("jpg").toFile("F:\\image\\output\\IMG_20131229_114806");说明:outputFormat:输出...
  • 总有jar和aar中修改其中class字节码需求,之前想直接用压缩工具解压缩,直接用javasist写代码修改,...看看效果吧(修改classes.jar后可以被识别aar) 借助了https://github.com/BryanSharp/hibeaver 对ja...
  • 2.在eclipse中的java项目中新建一个lib目录,将mybatis-3.5.2.jar复制到lib目录下再将图片中的lib目录打开将里面所有的jar包复制到java项目的lib目录下。 3.再将mysql-connector-java-5.1.48.jar导入java的lib目录...
  • 通过反编译修改jar,实现新增需求需求描述修改流程最后 需求描述 在公司云服务器上部署平台,管理端和操作端操作日志模块,列表增加显示客户端请求IP。 如,很简单。 一开始产品那边告知程序是2.4.0版本...
  • 实现修改、添加jar包内方法

    千次阅读 2018-06-26 13:12:51
    本文以dom4j.jar包为例,上一遍文章写到,xml、map多层相互转换,我就把该方法类直接添加到dom4j里面,可以通过dom4j.jar包直接调用到自定义方法,即把自己方法封装到dom4j里面。把自定义方法编译...
  • 百度ueditor修改jar

    2019-03-07 15:10:37
    最近项目集群部署需要将上传文件都放在文件服务器,正常上传、下载都已经通过程序处理,但是发现凡是用富文本控件ueditor上传图片都无法处理,目前该控件仅支持上传到项目路径下。网上搜索后,发现很多人也...
  • 谈谈搜索JAR包里图片文件

    千次阅读 2010-09-04 23:22:00
    我们做移植的,尤其是做渠道移植的,经常会遇到一个...2,如果图片是包含于JAR里的某些资源文件中的,这样的话我们就得花点功夫来搜索并替换的。我自己写了个算法,用来搜索,替换jar包里无法直接替换的图片。原理:
  • 1、在idea点击file-settings...3、在Local repostitoty 那行末尾勾选 Override单选框 并且选择jar包存放路径 4、点击Apply 保存 ----------------------------------------------------2018年9月4日-----...
  • 做项目时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file 简写。从名字就可以知道,它应用与Java息息相关。...在命令行键入jar命令之后,就会出现下。里面详细介绍了jar命...
  • 修改 fckedit.jar

    2007-07-04 22:49:27
    web.xml 配置 完善了对上传图片验证 <context-param><br> <param-name>FCKAllowedExtensionsImage</param-name><br> <param-value>jpg|gif|jpeg|png|bmp </param-value><br> </context-param><br> ...
  • 优化了添加图片时在当前页面预览 ...第一步:当然是需要加入必要两个jar包 commons-fileupload-1.3.jar、commons-io-1.2.jar 或者引入依赖: &lt;dependency&gt; &lt;groupId...
  • 如果想打包时静态资源也打包到jar中,springboot默认静态资源存放目录为static中,如 当我们引入一个js或css时,如果使用绝对路径、static默认是不计入路径、如下 当前目录引入css绝对路径时应该
  • java中jar的命令详解

    2014-09-09 10:24:14
    做项目时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file 简写。从名字就可以知道,它应用与Java息息相关。...在命令行键入jar命令之后,就会出现下。里面详细介绍了
  • 从Maven中心仓库下载到本地的jar默认存放在”${user.home}/.m2/repository”,${user.home}表示当前登录系统用户目录(如"C:\Users\gacl"),如下所示: Jar包存放在这个位置不太好,我们希望能够...
  •  从Maven中心仓库下载到本地的jar默认存放在”${user.home}/.m2/repository”,${user.home}表示当前登录系统用户目录(如"C:\Users\gacl"),如下所示      Jar包存放在这个位置不太好,我们希望...
  • 最近遇见UEditor 在开发环境能够正常图片上传回显,但是jar包部署到linux环境图片无法上传回显问题。 这里只是本人调通能够正常使用,现在只展示修改内容,...修改index.html ueditor 上传图片调用方法, 这里直.
  • 做项目时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file 简写。从名字就可以知道,它应用与Java息息相关。...在命令行键入jar命令之后,就会出现下。里面详细介绍了jar命...
  • 做项目时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file简写。从名字就可以知道,它应用与Java息息相关...在命令行键入jar命令之后,就会出现下。里面详细介绍了jar命令...
  • 前言:本文结合实际项目案例,介绍修改jar包源码方式。(其中运用了一些小技巧~) 正文: 场景:在项目中用了第三方jar包,但是jar包某个类成员变量是private,想将其改为public属性,以便为其赋值(源码...
  • 利用asm对jar进行修改

    千次阅读 2018-10-19 17:40:47
    有些时候,需要对jar进行修改,并加入一些“自定义”代码,利用asm工具就可以到。 二.流程 三.操作 步骤1,2 直接跳过了,这里从步骤3开始讲。首先需要Idea安装一个插件Asm byteCode outline,这个工具可以...
  • reportng的jar

    2017-09-20 17:20:27
    reportng的jar包,因为官网reportng包不支持中文,在网页显示中文会乱码。官网显示比较简单,修改的jar包支持中文并增加了饼状
  • 百度ueditor修改jar包使用及下载

    千次阅读 2019-03-07 15:15:31
    最近项目集群部署需要将上传文件都放在文件服务器,正常上传、下载都已经通过程序处理,但是发现凡是用富文本控件ueditor上传图片都无法处理,目前该控件仅支持上传到项目路径下。网上搜索后,发现有人也...
  • maven下载jar包的默认仓库是http://my.repository.com/repo/path速度较慢,通过配置国内镜像...选择Maven下的User Settings 如找到User Settings路径中的settings.xml文件2、修改配置文件OSC的MAVEN已经关闭了阿...
  • IDEA中JAR打包

    千次阅读 2018-10-30 14:46:10
    结果打成JAR执行后提示——XXXX.jar中没有主清单属性。以防遗忘解决办法,在此处记一下。 点击如所示选项 在弹出选项框中选择项目Main Class,最主要一步是将默认Directory for META-INF/MANIFEST....
  • Java中jar命令详解

    2019-09-29 22:12:55
    做项目时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file 简写。从名字就可以知道,它应用与Java息息相关。...在命令行键入jar命令之后,就会出现下。里面详细...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 856
精华内容 342
关键字:

修改jar中的图