当前位置:首页 > 后端开发 > 正文

如何查看Java JAR源码?

使用反编译工具如JD-GUI打开jar文件,或通过IDE(如IntelliJ/Eclipse)关联源码,若jar包含-sources.jar文件,直接导入即可查看源码。

使用IDE直接关联源码(推荐)

主流IDE(如IntelliJ IDEA、Eclipse)支持自动关联源码,操作最便捷:

  1. IntelliJ IDEA

    • 步骤:
      • 打开项目,右键点击依赖的JAR包(在External Libraries中)。
      • 选择 Download Sources(若远程仓库有源码,自动下载)。
      • 或手动关联: File → Project Structure → Libraries → 选择JAR → 点击"+"添加源码JAR/目录
    • 优势:

      调试时可直接跳转源码,支持断点跟踪。

  2. Eclipse

    • 步骤:
      • 右键项目 → PropertiesJava Build PathLibraries
      • 展开JAR包 → 点击 Source Attachment → 指定源码JAR或目录。
    • 提示:
      • 若源码在Maven仓库,安装 M2Eclipse插件 后自动下载。


使用反编译工具(无源码时)

当源码不可获取时,反编译工具可还原近似代码:

  1. JD-GUI(图形化工具)

    • 操作:
      • 下载 JD-GUI,拖入JAR文件即可查看。
    • 特点:

      支持导出全部源码为Java文件。

    • 命令行工具(CFR/JADX)

      • CFR: java -jar cfr.jar yourJar.jar --outputdir ./src
      • JADX: jadx -d ./output yourJar.jar # 导出为可读工程
      • 适用场景:

        需批量处理或集成到脚本中。

        如何查看Java JAR源码? 第1张

        如何查看Java JAR源码? 第2张

      • 通过构建工具下载源码

        若项目使用Maven/Gradle,可一键获取源码:

        • Maven

          执行命令:

          mvn dependency:sources # 下载依赖的源码 mvn dependency:resolve -Dclassifier=javadoc # 下载Javadoc

          源码自动保存到本地仓库(~/.m2/repository)。

        • Gradle

          在build.gradle中添加:

          apply plugin: 'java' task downloadSources(type: Sync) { from configurations.compileClasspath into "libs/sources" include { it.name.endsWith('-sources.jar') } }

          运行 gradle downloadSources 导出源码。

          如何查看Java JAR源码? 第3张


        从官方渠道获取源码

        1. Maven中央仓库
          • 访问 Maven Repository,搜索JAR包 → 点击版本号 → 下载 -sources.jar。
        2. GitHub/GitLab

          直接搜索库名,从开源仓库获取完整项目。

        3. 厂商文档

          如Spring、Apache项目,官网通常提供源码包下载链接。

          最佳实践与注意事项

          1. 优先级建议

            首选IDE自动下载 → 构建工具 → 反编译工具。

          2. 版权问题
            • 反编译代码仅限学习,避免商用或改动(遵守许可证)。
          3. 源码完整性

            反编译可能丢失注释或变量名,官方源码最可靠。

          引用说明

          • JD-GUI:开源Java反编译工具(GitHub)。
          • CFR:现代Java反编译器(项目主页)。
          • Maven Central:官方依赖仓库(mvnrepository.com)。
          • IntelliJ IDEA/Eclipse:JetBrains/Eclipse基金会提供的IDE文档。

0