java反编译jar包

  • 在日常开发中,由于之前的系统中UDF函数源码并没有接手,要想把现有UDF函数一直到其他平台上使用,因此需要对现有jar包进行反编译,并在其他平台上调试使用。
  • 反编译方式分两种:
    • GUI工具(JD-GUI)
    • idea插件:java-decompiler.jar

GUI工具

- 使用反编译GUI工具,这种工具可以直接打开jar包,并将反编译之后的结果导出

  • 反编译的结果文件入下(附带一下其他东西,还得手工处理一下):
/*    */ package com.alibaba.fastjson.support.odps.udf;
/*    */
/*    */ import com.alibaba.fastjson.JSON;
/*    */ import com.alibaba.fastjson.JSONArray;
/*    */ import com.alibaba.fastjson.JSONPath;
/*    */ import com.alibaba.fastjson.parser.Feature;
/*    */ import com.alibaba.fastjson.parser.ParserConfig;
/*    */ import com.alibaba.fastjson.serializer.SerializeConfig;
/*    */ import com.aliyun.odps.udf.UDF;
/*    */
/*    */ public class JSONArrayAddObject extends UDF {/*    */   public JSONArrayAddObject() {/* 13 */     JSON.DEFAULT_PARSER_FEATURE |= Feature.OrderedField.ordinal();
/*    */
/* 15 */     SerializeConfig.getGlobalInstance().setAsmEnable(false);
/* 16 */     ParserConfig.getGlobalInstance().setAsmEnable(false);
/*    */   }
/*    */
/*    */   public String evaluate(String jsonString, String value) {/*    */     JSONArray jsonArray;
/*    */     try {/* 22 */       jsonArray = JSON.parseArray(jsonString);
/* 23 */     } catch (Exception ex) {/* 24 */       ex.printStackTrace();
/* 25 */       return jsonString;
/*    */     }
/*    */
/* 28 */     addObject(jsonArray, value);
/*    */
/* 30 */     return JSON.toJSONString(jsonArray);
/*    */   }
/*    */
/*    */   public String evaluate(String jsonString, String path, String... values) {/*    */     Object rootObject;
/*    */     JSONArray jsonArray;
/*    */     try {/* 37 */       rootObject = JSON.parse(jsonString);
/* 38 */       jsonArray = (JSONArray)JSONPath.eval(rootObject, path);
/* 39 */     } catch (Exception ex) {/* 40 */       ex.printStackTrace();
/* 41 */       return jsonString;
/*    */     }
/*    */
/* 44 */     for (String value : values) {/* 45 */       addObject(jsonArray, value);
/*    */     }
/*    */
/* 48 */     return JSON.toJSONString(rootObject);
/*    */   }
/*    */
/*    */   protected void addObject(JSONArray jsonArray, String v1) {/*    */     try {/* 53 */       Object jsonValue = JSON.parse(v1);
/* 54 */       jsonArray.add(jsonValue);
/* 55 */     } catch (Exception ex) {/* 56 */       ex.printStackTrace();
/*    */     }
/*    */   }
/*    */ }/* Location:              D:\fastjson-odps.jar!\com\alibaba\fastjson\support\odp\\udf\JSONArrayAddObject.class* Java compiler version: 5 (49.0)* JD-Core Version:       1.1.3*/

IDEA插件java-decompiler

  • 使用前先安装plugnis:java-decompiler
  • 执行命令:
java -cp "D:\apps\JetBrains\IntelliJ IDEA Community Edition 2018.1.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true fastjson-odps.jar fastjson-odps
  • 最后的参数是数据目录,目录需要先创建出来
  • 到这里基本就反编译成功了,接下来就是代码调试了

java反编译jar包相关推荐

  1. Java反编译Jar包和Android APK(类似.NET Reflector)

    JD-GUI 这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览. JD-Eclipse JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – & ...

  2. [转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件)

    [转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件) 文章分类:Java编程 该软件无需安装,界面清爽. 转自:http://www.devdoc.org/index.php/a ...

  3. IDEA—使用插件反编译jar包

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...

  4. 使用IDEA插件反编译jar包文件

    1. 简介 查看日志报错行数时,发现现有代码又和线上的代码不一致,这个时候我们就需要反编译,本文介绍一下如何通过我们神奇的Idea软件进行反编译jar包. 使用到IDEA一个重要的插件:java-de ...

  5. Java反编译jar成Java文件

    Luyten简介 Luyten Mac版是Mac平台上的一款Java反编译工具,Luyten Mac版是一款很强大的反编译工具包,是一款github的开源工具,它的功能非常强大,界面简洁明晰.操作方便 ...

  6. 如何修改可运行Jar包,如何反编译Jar包

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All  ...

  7. fernflower反编译jar包用法

    1.用jd-gui反编译,save source后会生成非源码的注释代码. 2.Android studio跳转源码可以看到,class文件是用fernflower反编译的源码,然后我们去GitHub ...

  8. idea反编译jar包

    idea提供了一键jar反编译插件 decompiler 通过[Settings]-->[Plugins] 搜索此插件下载 下载完成之后在你idea的安装目录找到此插件并进入目录 在jar包同目 ...

  9. java手动编译jar包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  10. Java源码混淆,jar包加密,禁止反编译jar包

最新文章

  1. Spring Boot 搭建 ELK,这才是正确看日志的方式!
  2. Mysql5.7-CentOS7安装
  3. 推荐一款代码神器,代码量至少省一半!
  4. Python学习笔记(五) Python高级特性
  5. 产品操作-查询全部产品
  6. ASP.NET Core中如何调整HTTP请求大小的几种方式
  7. 记录一次服务进程强行退出的问题排查过程
  8. Spring IOC原理总结
  9. [转]DPM2012系列之十八:如何保护工作组计算机
  10. 利用动态图层实现数据的实时显示
  11. 图片飞出去的特效怎么做?3分钟AE制作教程
  12. 转帖:免费完美激活Windows7旗舰版
  13. 本地电脑安装虚拟机-解决USB驱动报错(代码 39)问题
  14. Python - poetry(4)管理环境
  15. MySQL的事务和存储引擎
  16. python ttk组件_Python ---(一)Tkinter窗口组件:Label
  17. 人生苦短,使用百度云SDK,编写python代码调用接口的车牌识别
  18. 数据结构与算法之Python实现——单链表
  19. android 11.0 wifi密码保存的位置
  20. 《信号与系统》笔记·第一章:信号与系统

热门文章

  1. [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)...
  2. [root@py ~]# watch -n 1 ifconfig 求解释
  3. Java正则表达式之Matcher类的find和matches方法的区别
  4. App_Offline.htm 功能,app_offline.htm 是怎样产生的?
  5. Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
  6. 查找java实现_常见查找算法Java实现
  7. bash复杂脚本解释
  8. MacOS串口调试工具minicom配置
  9. python中怎么调用sort_python中sort()方法的cmp参数
  10. mysql统计和程序统计_Mysql之统计数据