java反编译jar包

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
  • 最后的参数是数据目录,目录需要先创建出来
  • 到这里基本就反编译成功了,接下来就是代码调试了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值