jar还原源码

2023-11-06

上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的jar包供使用。。边吐(咒)槽(骂)边在SVN服务器上四处翻找,想找到这个工程的源码,毕竟没源码怎么跑起来这个工程?不能跑起来怎么改造调试?

确认真的找不到源码之后。。冷静下来开始研究这个前辈留下的坑

0. get jar包

从生产环境down下来jar包,打开看了一眼:

黑人问号脸。。这是啥?为什么jar包里面还有java文件?还有这种操作?

1. 初次尝试

把jar包的内容解压出来之后,就想把所有的class文件删掉,只留下java文件,这样不就get了源码?

结果发现想的太简单了,从上面的截图就能看出,class文件在2010年的5月25号有更新,而java文件是2010年3月31号更新的,这就说明class文件比java文件更新,所以这些java文件都是过期的。。【坑啊

2. 再次尝试

如果只有一个class文件,怎么查看java代码这个很简单,平时用JD-GUI或类似的反编译工具就可以了,但印象中只能一个文件一个文件的看,我手里有一个jar包可怎么还原源码导进MyEclipse啊。。

去google了半天,都没有找到好的答案(事后发现了答案,和我的做法相同)

一阵沮丧,然后无聊打开了JD-GUI,打开jar包后,随手点到了左上角的File,咦??

发现了一个save!一阵兴奋,然后点了保存试了一下,发现导出来的zip文件就是反编译后的整个源码!

3. 小问题

打开zip文件看了一眼,发现:

因为jar包里面有同名的class文件和java文件,导出来的反编译源码也保留了旧的java文件在里面(从文件时间可以看出)
————————————————
版权声明:本文为CSDN博主「PriestM」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mxmxz/article/details/73043156

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jar还原源码 的相关文章

  • 如何在日期选择器中设置不在当前月份的单元格的样式

    我目前正在为我的 JavaFX 应用程序制作注册表 问题是 当日期选择器中的单元格不在页面的月份上时 我想让该单元格变灰 让我们看看我当前的日期选择器 我的日期选择器 正如您所看到的 我希望下个月的日期 27 日 28 日 30 日以及 1
  • 热重载在docker中运行的java程序

    我开发了一个java程序 应该在docker中运行 然而 我在调试docker中运行的java程序时遇到了很多痛苦 我在网上搜索 一些教程提出了像 spring dev tools 这样的工具 因为我的java程序是基于spring boo
  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • ElasticBeanstalk Java,Spring 活动配置文件

    我正在尝试通过 AWS ElasticBeanstalk 启动 spring boot jar 一切正常 配置文件为 默认 有谁知道如何为 java ElasticBeanstalk 应用程序 不是 tomcat 设置活动配置文件 spri
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • manifest.mf 文件的附加内容的约定?

    Java JAR 中的 MANIFEST MF 文件是否有任何超出 MANIFEST MF 约定的约定 JAR规范 http download oracle com javase 1 4 2 docs guide jar jar html
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • 当分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

    我有看起来像这样的 GraphTraversals attrGroup GraphTraversal
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • JAVA - 如何从扫描仪读取文件中检测到“\n”字符

    第一次海报 我在读取文本文件的扫描仪中读取返回字符时遇到问题 正在读取的文本文件如下所示 test txt start 2 0 30 30 1 1 90 30 0 test txt end 第一行 2 表示两个点 第二行 位置索引 0 xp
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是

随机推荐

  • 房地产不同视角

    author skate time 2012 08 14 房地产不同视角 房地产 你为啥看不懂 一 看现象与看本质 http blog sina com cn s blog 77479d2301015cpk html 房地产 你为啥看不懂
  • KMP例题

    KMP算法 实现两个字符串的匹配 KMP讲解 KMP模板 include
  • MinGW和 MinGW-W64的区别

    部分参照备忘录原文 bitbucket org FrankHB yslib src 50c3e6344a5a24b2382ce3398065f2197c2bd57e doc Workflow Annual2014 txt at master
  • 使用R语言进行柱状图可视化特征的种类和个数

    使用R语言进行柱状图可视化特征的种类和个数 柱状图是一种常用的数据可视化工具 用于展示变量 特征 的种类及其数量 通过柱状图 我们可以更直观地了解数据的分布情况和特征之间的差异 在R语言中 我们可以使用多种方法来创建柱状图 并对特征种类和个
  • 使用Excel实现数据驱动测试

    文章目录 1 概述 2 xlrd 3 openpyxl 4 pandas 5 如何在excel表格中描述多个用例 5 1 制定解析规则 5 2 创建测试用例 1 概述 测试类型 本质 数据类型 接口测试 数据流动和验证 csvyamljso
  • RTX2080ti配置tensorflow gpu版

    tensorflow gpu配置 昨晚搞到1点 终于把tensorflow gpu给配置成功了 之前是交给一位朋友搞的 我也懒得弄 结果还是没搞定 秉着万事靠自己的态度 终于 一边下军旗 一边配置成功了 首先 讲讲我个人的电脑配置 E3 1
  • 有关‘全局唯一id‘

    UUID和Snowflake的对比 当需保证全局唯一的id 可以选用UUID或Snowflake 及其变种 其中UUID 不依赖于任何第三方系统 性能和可用性上较好 Snowflake生成的id具有单调递增性 可以拿到生成时的时间戳信息 能
  • MySQL高级增删改查

    新增数据 基本语法 insert into 表名 字段列表 values 值列表 主键冲突 更新和替换 主键冲突 更新操作 insert into 表名 字段列表 包含主键 values 值列表 on duplicate key updat
  • SqlServer数据库版本不一致使用DROP TABLE IF EXISTS语法报错

    SqlServer数据库版本不一致使用DROP TABLE IF EXISTS语法报错 在SqlServer2016版本及更高版本 建表前判断表是否存在 可以使用 DROP TABLE IF EXISTS sysuser 低版本的SqlSe
  • linux启动停留时间,Ubuntu 16.04 启动长时间停留在紫屏状态

    Ubuntu 16 04 启动长时间停留在紫屏状态 1 Ubuntu 16 04 启动长时间停留在紫屏状态 2 Advanced options for Ubuntu 3 Ubuntu with Linux 4 10 0 28 generi
  • Framework工具——EA画图

    EA 是一个著名的企业架构 Enterprise Architecture 工具 用于绘制和管理企业的架构图和过程模型 该工具提供了多种功能 包括建立业务流程图 数据流图 组织结构图 应用架构图等 EA工具可帮助企业进行战略规划 业务流程改
  • Redis过期监听—订单超时-取消

    最近在做电商项目 涉及支付超时处理的几种方式 记录哈使用redis监听处理 提交订单的时候 支付 超过了有效时间则支付状态自动更新为已取消 redis过期监听的实现 1 修改redis windows conf配置文件中notify key
  • OpenBSD cvsup更新

    安装了 OpenBSD 后你会发现它很小个 只有500多M 当然里面只有ssh sendmail功能 dev wd0a 130M 38 8M 84 7M 31 dev wd0h 95 5G 16 0K 90 8G 0 home dev wd
  • vue2.0解决el-table无限滚动解决数据量大前端界面渲染耗时或卡顿问题

    vue相关依赖版本 name vue demo version 0 1 0 private true scripts serve vue cli service serve build vue cli service build lint
  • input元素的事件的触发顺序及change事件触发条件

    1 input元素的事件触发顺序
  • Ubuntu学习笔记:配置账户密码使用期限

    Ubuntu学习笔记 配置账户密码使用期限 配置账户密码最短使用期限为 10天 最长使用期限为 90 天 查看的方式还可以是 sudo passwd S liu
  • SpringBoot使用ShedLock调度任务

    前言 在分布式的场景下 SpringBoot程序以集群的方式部署 这些程序中运行着相同的代码 如果其中有定时任务的话 所有的程序都会运行该任务 这样就会导致任务的重复执行 由于所有的定时任务在集群的不同节点值中 所以需要一个专属的数据存储空
  • GCC编译选项参数

    linux系统下头文件 库文件搜索路径总结 文章目录 一 头文件 1 1 gcc或g 找头文件有三种策略 二 库文件 2 1 编译时查找库文件路径 2 2 运行时查找动态库文件路径 2 3 动态库的搜索路径搜索的先后顺序 一 头文件 1 1
  • java类静态实例成员_java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序...

    java中的成员分为 静态成员 静态成员变量 静态代码块 静态成员方法 实例成员 实例成员变量 实例代码块 实例成员方法 构造方法 析构方法 下面做的实验 主要是验证 当new 一个子类时 子类和它的父类中 静态成员变量 静态代码块 实例成
  • jar还原源码

    上周接到个新任务 一个遗留的接口工程需要改造 然而根据前任开发留下的文档看 这个工程没有代码 只有生产环境的jar包供使用 边吐 咒 槽 骂 边在SVN服务器上四处翻找 想找到这个工程的源码 毕竟没源码怎么跑起来这个工程 不能跑起来怎么改造