【笔记17】使用 jad 工具把 java 的 class 文件转换为 java 文件;使用 luyten 把 java 的 jar 包转换为 java文件

简介: 📃 我的代码被存放在公司的电脑上📃 疫情原因使得我只能在家办公📃 而公司已经被隔离了😂 (怕公司的电脑感染新冠病毒)📃 我无法在公司代码的基础上继续编写代码📃 我有两种选择:① 重新编写代码;② 跑路📃 但是我选择了第三个选项:把 Java 项目打包后的 jar 文件转换为打包之前的 java 文件📃 在这里我推荐两款工具,这两款工具都可以把 class 文件转换为 java 文件🌼 ① jad 工具:可把 class 文件转换为 java 文件 【本文章的前四节是介绍 jad 工具的使用】🌼 ② Luyten 工具:可把 jar 包转换为 java 文件

零、前言

📃 我的代码被存放在公司的电脑上
📃 疫情原因使得我只能在家办公
📃 而公司已经被隔离了😂 (怕公司的电脑感染新冠病毒)
📃 我无法在公司代码的基础上继续编写代码
📃 我有两种选择:① 重新编写代码;② 跑路
📃 但是我选择了第三个选项:把 Java 项目打包后的 jar 文件转换为打包之前的 java 文件
📃 在这里我推荐两款工具,这两款工具都可以把 class 文件转换为 java 文件

🌼 ① jad 工具:可把 class 文件转换为 java 文件 【本文章的前四节是介绍 jad 工具的使用】
🌼 ② Luyten 工具:可把 jar 包转换为 java 文件 【本文章的第四节之后的是介绍 Luyten 工具的使用】

一起来感受这两个工具的强大之处吧!😀

一、下载反编译工具【jad】

项目官网 http://java-decompiler.github.io/

通过下面的网址下载反编译工具:
下载网址 https://varaneckas.com/jad/
在这里插入图片描述

---
解压下载成功的压缩文件
在这里插入图片描述


解压后如下图所示;
在这里插入图片描述

二、反编译的准备工作【jad】

🎄 把打包后的 classes 文件夹和 jad.exe 放在同一路径下
在这里插入图片描述


🎄 创建 decodeJava 文件夹,用于存放反编译后的 java 文件
在这里插入图片描述

三、进入 dos 窗口【jad】

按照下图操作进入 jad.exe 文件所在的 dos 命令窗口:
在这里插入图片描述


上图操作后应该出现下图所示界面:
在这里插入图片描述

四、输入命令,生成 java 文件【jad】

在上图界面输入下面的命令:

jad -o -r -s java -d decodeJava classes/**/*.class
📖 decodeJava: 【.class】文件反编译后的【java】文件存放的文件夹
📖 classes/*/.class: classes 文件夹下的所有【.class】文件都进行反编译(包括子文件夹下的【.class】文件)

执行命令截图:
在这里插入图片描述


生成的 java 文件截图;
在这里插入图片描述

五、下载和介绍 Luyten 【Luyten】

我把它放在我的百度网盘里面,大家用百度网盘下载即可(大家点个赞支持哈吧!)

链接:https://pan.baidu.com/s/1YJJWNfASvs_gcUcx1nY3Ug 
提取码:8kcz

下载解压后图片如下;
在这里插入图片描述


进入命令行窗口:
在这里插入图片描述


执行下面的命令

java -jar luyten-0.5.4.jar

执行完上面的命令后会出现下面的界面:
在这里插入图片描述

六、使用 Luyten 反编译 jar 包【Luyten】

选择要反编译的 jar 文件:
在这里插入图片描述


选择 jar 文件之后:
在这里插入图片描述


生成 & 保存反编译后的 java 文件:
在这里插入图片描述

在这里插入图片描述


看结果:
在这里插入图片描述

在这里插入图片描述

七、中文乱码的情况【Luyten】

需进行下面的配置,反编译后的中文才能正常显示。否则,是 Unicode 编码
在这里插入图片描述

八、结束语

☘️ 这个工具真的太好用了, 感谢这个工具的开发者
☘️ 创作不易,请给我点个赞吧!
相关文章
|
26天前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
1月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
239 37
|
5天前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
13 1
|
5天前
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
10 0
java 常用注解大全、注解笔记
|
1月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
14天前
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
|
14天前
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
|
17天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
1月前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
消息中间件 缓存 监控
82 0