You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Quarkus Docker镜像中获取Java源代码(Quarkus 2.12.0.Final)

从Quarkus 2.12.0.Final Docker镜像中获取Java源代码的方法

根据镜像的构建方式,分为以下几种场景处理:

场景1:镜像中直接包含源代码(少见,通常仅开发环境镜像)

如果构建镜像时未移除源代码目录,可直接从容器中提取:

  • 启动临时容器:docker run -d --name quarkus-temp <你的镜像名称/ID>
  • 进入容器(若镜像基于Alpine/Ubi-Minimal,用/bin/sh替代/bin/bash):docker exec -it quarkus-temp /bin/bash
  • 查找源码位置:Quarkus开发镜像的源码通常在/workspace/src或/app/src目录,可通过find / -name "*.java"全局搜索
  • 拷贝源码到本地:docker cp quarkus-temp:/path/to/source-dir ./local-source-folder
  • 清理临时容器:docker stop quarkus-temp && docker rm quarkus-temp

场景2:镜像仅包含编译后的Class文件(生产镜像常见)

需要先提取Class文件,再通过反编译工具还原源码:

步骤1:提取容器中的Jar包/Class文件

  • 查看应用文件路径:运行临时容器并列出目录:docker run --rm <你的镜像名称/ID> ls /workspace/quarkus-app(Quarkus默认生产镜像的应用目录通常为/workspace/quarkus-app)
  • 拷贝核心Jar包到本地:docker run -d --name quarkus-temp <你的镜像名称/ID>,然后执行docker cp quarkus-temp:/workspace/quarkus-app/quarkus-run.jar ./
  • 清理临时容器:docker stop quarkus-temp && docker rm quarkus-temp

步骤2:反编译Class文件

  • 解压Jar包:unzip quarkus-run.jar -d quarkus-class-files
  • 使用反编译工具还原源码:
    • 用FernFlower(命令行工具):下载FernFlower的Jar包后,执行java -jar fernflower.jar quarkus-class-files/ ./output-source,生成的源码会在output-source目录中
    • 用JD-GUI(可视化工具):直接打开quarkus-run.jar,可查看反编译后的代码并导出到本地

场景3:镜像为Quarkus原生镜像(Native Image)

这种情况下应用已被编译为机器码,无法通过常规反编译工具还原Java源代码,几乎没有可行的方法获取源码。

注意:提取和反编译他人镜像中的代码前,请确保符合相关版权和许可协议,避免法律风险。

内容的提问来源于stack exchange,提问作者lopah elision

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:00:03