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
- 最后的参数是数据目录,目录需要先创建出来
- 到这里基本就反编译成功了,接下来就是代码调试了
java反编译jar包相关推荐
- Java反编译Jar包和Android APK(类似.NET Reflector)
JD-GUI 这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览. JD-Eclipse JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – & ...
- [转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件)
[转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件) 文章分类:Java编程 该软件无需安装,界面清爽. 转自:http://www.devdoc.org/index.php/a ...
- IDEA—使用插件反编译jar包
关注微信公众号:CodingTechWork,一起学习进步. 引言 在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...
- 使用IDEA插件反编译jar包文件
1. 简介 查看日志报错行数时,发现现有代码又和线上的代码不一致,这个时候我们就需要反编译,本文介绍一下如何通过我们神奇的Idea软件进行反编译jar包. 使用到IDEA一个重要的插件:java-de ...
- Java反编译jar成Java文件
Luyten简介 Luyten Mac版是Mac平台上的一款Java反编译工具,Luyten Mac版是一款很强大的反编译工具包,是一款github的开源工具,它的功能非常强大,界面简洁明晰.操作方便 ...
- 如何修改可运行Jar包,如何反编译Jar包
将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All ...
- fernflower反编译jar包用法
1.用jd-gui反编译,save source后会生成非源码的注释代码. 2.Android studio跳转源码可以看到,class文件是用fernflower反编译的源码,然后我们去GitHub ...
- idea反编译jar包
idea提供了一键jar反编译插件 decompiler 通过[Settings]-->[Plugins] 搜索此插件下载 下载完成之后在你idea的安装目录找到此插件并进入目录 在jar包同目 ...
- java手动编译jar包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...
- Java源码混淆,jar包加密,禁止反编译jar包
最新文章
- Spring Boot 搭建 ELK,这才是正确看日志的方式!
- Mysql5.7-CentOS7安装
- 推荐一款代码神器,代码量至少省一半!
- Python学习笔记(五) Python高级特性
- 产品操作-查询全部产品
- ASP.NET Core中如何调整HTTP请求大小的几种方式
- 记录一次服务进程强行退出的问题排查过程
- Spring IOC原理总结
- [转]DPM2012系列之十八:如何保护工作组计算机
- 利用动态图层实现数据的实时显示
- 图片飞出去的特效怎么做?3分钟AE制作教程
- 转帖:免费完美激活Windows7旗舰版
- 本地电脑安装虚拟机-解决USB驱动报错(代码 39)问题
- Python - poetry(4)管理环境
- MySQL的事务和存储引擎
- python ttk组件_Python ---(一)Tkinter窗口组件:Label
- 人生苦短,使用百度云SDK,编写python代码调用接口的车牌识别
- 数据结构与算法之Python实现——单链表
- android 11.0 wifi密码保存的位置
- 《信号与系统》笔记·第一章:信号与系统
热门文章
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)...
- [root@py ~]# watch -n 1 ifconfig 求解释
- Java正则表达式之Matcher类的find和matches方法的区别
- App_Offline.htm 功能,app_offline.htm 是怎样产生的?
- Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
- 查找java实现_常见查找算法Java实现
- bash复杂脚本解释
- MacOS串口调试工具minicom配置
- python中怎么调用sort_python中sort()方法的cmp参数
- mysql统计和程序统计_Mysql之统计数据