你需要的Java jar包反编译工具来了

简介: 在我们进行java开发过程中,有时候需要看一下某个jar包是否确定已经是我们更新过的代码,那么此时,就需要使用反编译工具看一下jar包中对应的java源码。下文介绍一个高效率的jar包源码查看工具:jd-gui

jd-gui下载与编译

jd-gui源码可直接从github下载并进行编译。

github地址:git clone https://github.com/java-decompiler/jd-gui.git

git clone https://github.com/java-decompiler/jd-gui.git
cd jd-gui
./gradlew build

编译完成之后,即可得到以下文件:

root@hadoop[/root/xzc/jd-gui]# ll build/distributions/
总用量 8456
-rw-r--r-- 1 root root     608 8月  13 16:39 jd-gui-1.6.6.changes
-rw-r--r-- 1 root root 1336882 8月  13 16:39 jd-gui-1.6.6.deb
-rw-r--r-- 1 root root 1338425 8月  13 16:39 jd-gui-1.6.6.rpm
-rw-r--r-- 1 root root 1597440 8月  13 16:39 jd-gui-osx-1.6.6.tar
-rw-r--r-- 1 root root 1348906 8月  13 16:39 jd-gui-osx-1.6.6.zip
-rw-r--r-- 1 root root 1658880 8月  13 16:39 jd-gui-windows-1.6.6.tar
-rw-r--r-- 1 root root 1365507 8月  13 16:39 jd-gui-windows-1.6.6.zip

root@hadoop[/root/xzc/jd-gui]# ll build/libs/
总用量 4612
-rw-r--r-- 1 root root 3238467 8月  13 16:39 jd-gui-1.6.6.jar
-rw-r--r-- 1 root root 1480126 8月  13 16:39 jd-gui-1.6.6-min.jar

对应不同平台,使用build/distributions文件中的不同文件即可。

如果你不想编译的话,可以从以下地址直接下载:http://home.lrting.top:5000/sharing/QgU9eiPeT

该文件中包含build/distributions中的所有文件。

jd-gui使用

这边以windows平台的为例。

1 浏览器打开http://home.lrting.top:5000/sharing/QgU9eiPeT链接下载jd-gui.zip

解压得到:

选择jd-gui-windows-1.6.6.zip压缩文件,再次进行解压,得到:

双击jd-gui.exe,得到该工具首页:

点击File,打开待反编译的jar包:

点击左上角路径即可看到.class文件及其对应的java源码:


了解更多

相关文章
|
3月前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
29天前
|
数据采集 分布式计算 Java
Kettle的Java开发环境需要什么jar包?
【10月更文挑战第24天】Kettle的Java开发环境需要什么jar包?
74 2
|
2月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
60 2
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
3月前
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
|
3月前
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
|
4月前
|
Java Maven 数据库
|
4月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
4月前
|
Java Maven C++
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
|
4月前
|
Java Spring
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)