将可运行Jar包,反编译成项目,修改代码,再次编译,打包。

需要工具:jd-gui、myeclipse

具体步骤:

1、使用jd-gui打开原始的Jar包,选择File-->Save All Sources,会生成一个zip压缩包

2、解压这个压缩包,生成一个文件夹,可以看到文件夹里所有的class文件变成了java源码文件。(如果最开始直接解压原始的Jar包,那么解压出来的就是class文件,而不是java源文件)

3、打开myeclipse,新建一个普通的Project项目,将解压后的内容拷贝到项目里。

4、此时编译会报错,因为缺少依赖的Jar包,需要找到相应的包并且导入。那么这些包到底是哪些呢?

使用jd-gui打开最原始的Jar包,在META-IN目录下的maven目录下,有所需要的依赖包。其中pom.properties中记录着Jar包的版本信息,可以直接从maven仓库下载这些包

5、最后,项目重新编译,并且打成Jar包。如果生成的源码可以运行,就直接编译,直接打包。

6、如果生成的项目不能运行,但是你只需要更改一两个类:

(1)编译。如果导入了所依赖的包,那么项目编译应该是没问题的,这一步仔细检查。然后使用myeclipse或者java命令编译,生成一个class文件。

(2)打包。

简单的方法:使用rar,zip,好压等解压缩工具打开原始的Jar包,直接把修改的class文件拖进去,覆盖原来的class文件。

复杂的方法:将原始Jar包,直接解压生成一个文件夹,解压后的是class文件。用修改后的class文件进行替换,再将这个文件夹压缩生成一个zip文件,最后将zip文件的后缀名改成jar,即可运行。

注意使用winrar工具打包时,要选择压缩文件格式为zip

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/acm-bingzi/p/decompileJar.html

java如何转成jar包,修改及反编译可运行Jar包实现过程详解相关推荐

  1. java编译不报错但运行啥都没_java编译时与运行时概念与实例详解

    java编译时与运行时概念与实例详解 发布于 2020-7-29| 复制链接 本篇文章通过实例对 java程序编译时与运行时进行了详解,需要的朋友可以参考下 Java编译时与运行时很重要的概念,但是一 ...

  2. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

  3. 服务器修改ip socket,ServerSocket默认邦定IP实现过程详解

    开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以. 因为对于服务器来说,有时它不止一块网卡,而我们系统一定是通过指定的IP和端口进行通信的,所以服务端所使用的 ...

  4. Java jar 如何防止被反编译?代码写的太烂,害怕被人发现

    欢迎关注方志朋的博客,回复"666"获面试宝典 java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在.今天就拜读了一篇相关的文章, ...

  5. jar 反编译_Java加密jar包流程

    Java加密效果概述 深思对 java 的源码保护方式是通过 Virbox Protector 与DS Protector 工具进行保护.软件商无需任何代码开发,即可轻松加密Java应用程序.Jar包 ...

  6. java压缩文件详解_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

  7. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

  8. Java web 开发的概念、环境配置、创建项目过程详解(Eclipse)

    Java Web 开发 Java Web 开发概念 搭建过程 详解 在eclipse创建Dynamic Web Project 创建时选择Tomcat的版本 创建项目成功 eclipse环境下如何配置 ...

  9. Jar包加密,防止反编译

    Jar包加密,防止反编译方法 XJar加密工具 XJar功能特性 使用方法(手动执行方式) 使用方法(Maven插件方式) exe4j加密工具 使用方法 jvmti加密工具 使用方法 参考 XJar加 ...

最新文章

  1. 机器学习入门(14)— 神经网络学习整体流程、误差反向传播代码实现、误差反向传播梯度确认、误差反向传播使用示例
  2. 诊断ORA-08103错误
  3. python3 安装 mysql 用pip install PyMySQL
  4. jvm性能调优实战 - 25模拟在Young GC过后因为放入下Survivor区域直接进入老年代
  5. HEX、DEC、OCT和BIN的解释
  6. unity3d常用组件及分析
  7. 一个自己的tooltip
  8. angular使用动态组件后属性值_Angular 2-组件
  9. Android JNI
  10. 007 JVM堆内存划分
  11. VUE 3文件上传 Change事件无效 和 unsupported media type 415
  12. 关于linux网络编程的项目,linux网络编程入门
  13. 苹果备份删除有影响吗_苹果官网崩了,对手机的销售有什么影响吗?
  14. iris学习踩坑之旅
  15. Planet比Google earth更好用的地图下载神器Basemaps Viewer不用写代码全球高清影像框选下载tif格式
  16. 2020南京大学软件学院夏令营模拟机试题集
  17. JAVA 实现《模式策略的角色扮演游戏》游戏
  18. 计算机存储器件中运行速度最快,选择题:下列存储器中,存取速度最快的是()...
  19. 一招教你看懂Netty!java笔试常见的逻辑题
  20. Win Me下的Ghost

热门文章

  1. hook koa web 码云_gitee码云使用webhook
  2. php 重复写入数据,完美解决Thinkphp3.2中插入相同数据的问题
  3. 两个sql交集_神奇的 SQL 之性能优化 → 让 SQL 飞起来
  4. python time模块详解_py 模块之 time模块 讲解②
  5. Java线程机制学习
  6. Python字典的常用操作
  7. Django 【第二十篇】后端CORS解决跨域问题
  8. C语言--关于指针两种初始化赋值操作
  9. C# Socket案例(服务端与客户端)
  10. 窗口类、窗口类对象与窗口 三者之间关系