修改及反编译可运行Jar包实现过程详解
将可运行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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Android修改jar文件包名的方法分享
前言 jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用. 带来的问题是, 多个jar包容易出现包名冲突. 这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法. 举两个例子,是笔者亲身经历的两个情况. Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD 这款手机上会抛出异常(TypeNotFoundException) Jackson库:这也是个 json
-
用命令行编译java并生成可执行的jar包方法
1.编写源代码 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: package test; import java.awt.*; import javax.swing.*; //更多包的导入... class NotePadFrame extends JFrame { //主界面的设计... } //其他相关代码... public class CardLayoutDemo { public static
-
Android在高jar包版本的工程中修改方法
android的应用程序安装包APK如果是在高版本的android jar上开发的是无法在低版本的android SDK上跑的,所以我们需要将我们已经开发好的应用程序换上低版本的android jar包重新编译一个APK,那么如何简单的在高版本的工程中直接修改呢: 1. eclipse中点击工程->Properties-> Android 在右侧的界面中选中Android 2.2即可(前提是你的android sdk中同时包含这两个版本的android jar包) 或者 打开default.p
-
解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题
如题,编译和打包都是正常的,pom文件中依赖存在并且没有报错.找到相应包的引用位置,也能正常访问包中的内容.而且提示的一般都是基础的jar包找不到,比如单元测试用到的jar包等... 情形一: 其他同事提交代码时把idea中的 .iml 文件也一起提交了,该文件中配置的jdk lib 路径与自己电脑中的该路径不一致. 解决方法很简单,执行一下 maven update 即可,也可以手动修改 .iml 文件中的该路径. 情形二: 排除情形一出现的原因,或使用情形一中的方法解决无效时,可以使用以下命
-
Linux下修改jar、zip等文件内的文件详解
Linux下修改jar.zip等文件内的文件详解 看到很多同事在Linux环境下修改jar包内的文本文件或zip中的文本文件时,经常是先把jar包或zip包下载下来,然后修改,再上传.其实Linux针对此类文件提供了相应的操作功能. 平时修改Linxu文件时使用vi或vim命令来修改.其实修改jar包或zip可以同样使用此命令. 对文件执行vi或vim. vim xxx.jar 执行之后,会显示jar包或zip包中的文件. 通过以下命令根据文件名字查找文件: /index.ftl 比如上面的命令
-
android studio编译jar包或者aar包的方法教程详解
1. 在原有工程目录右键-> new ->Module->: 2. 选择library: 3. 一路next,最后finish: 4. 在新生成的lib module下的build.gradle中添加如下代码: task makeJar(type: Copy) { //删除存在的 delete 'build/outputs/aar/plugin-release.aar' delete 'libs/' //设置拷贝的文件来源 from('build/outputs/aar/') ////新
-
Mybatis逆工程jar包的修改和打包
上一篇文章Mybatis逆工程的使用主要是讲了mybatis-generator-core-1.3.2.jar的使用,这一篇我要介绍的是,修改jar包代码,实现生成自定义模板. 1.我们从这里可以下载mybatis-generator-core-1.3.2.jar项目源码 http://maven.outofmemory.cn/org.mybatis.generator/mybatis-generator-core/1.3.2/ 2.在eclipse下导入存在的maven项目,File->Imp
-
在Android源码中编译出指定jar包的操作
今天想把android源码/vendor/letv/frameworks/base/java下的源码编译成 framework-letv.jar供乐乐语音客户端使用,编译完后,发现jar包文件虽然生成了,但包里面并没有相关的源码class文件,无法正常使用. 经过请教加研究发现,Android.mk文件需要添加选项如下: 54 LOCAL_JACK_ENABLED := disabled # important! 55 #include $(BUILD_JAVA_LIBRARY) 56 incl
-
修改jar包package目录结构操作方法
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别.因此,包可以避免名字冲突. 3.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类. Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位
-
修改及反编译可运行Jar包实现过程详解
将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All Sources,会生成一个zip压缩包 2.解压这个压缩包,生成一个文件夹,可以看到文件夹里所有的class文件变成了java源码文件.(如果最开始直接解压原始的Jar包,那么解压出来的就是class文件,而不是java源文件) 3.打开myeclipse,新建一个普通的Project项目,将解压后的内容拷
-
Android Studio3.2中导出jar包的过程详解
1.)说明. 本项目是来自github上的一个项目roottools (https://github.com/Stericson/RootTools),这里只是想本地编译后输出下jar包供自己进行使用. 2.)操作步骤. 步骤1)按之前你熟悉的方式进行开发待输出为jar的项目. 步骤2) 一般的gradle设置,比如gradle版本,android sdk的编译,目标,最小要求版本..还有compileOptions的jdk版本设置等. 步骤3)gradle中的apply plugin设置: a
-
IDEA反编译出整个jar包源码
一.保证您的idea配置有如下插件Java Bytecode Decomplier: File–>Settings–>Plugins,在搜索框内搜出后勾选,并应用. 二.在您需要编译的jar包的目录下,打开命令行界面,输入以下命令: E:\lib>java -cp "D:\ideaIU-2017.1.1\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main
-
springboot的war和jar包的使用详解
本篇和大家分享的是通过maven对springboot中打war包和jar包:war通常来说生成后直接放到tomcat的webapps下面就行,tomcat配置自动解压war,而jar一般通过命令行部署和启动: 首先,来实战怎么生成war包,主要来说可以分为3个步骤: •程序入口改造 •排除springboot内置tomcat •spring-boot-maven-plugin插件中配置程序入口 程序入口改造,我们需要把springboot的main入口屏蔽掉,然后继承SpringBootSer
-
Java关于jar包的知识详解
在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名包. 格式为: package pkg1[.pkg2[.pkg3-]]: 代码实例: package cn.com.zhouzhou;//包名一定要由小写字母组成 public class Lession1 { public static void main(String[] args) { Sys
-
intellij idea 将模块打jar包的步骤详解
今天要想在本机开多个java压测进程测试目标程序.所以需要在本机开多个终端执行jar程序.步骤如下: 1.点开Project Structure,点击左侧Artifacts菜单 选择下图中1.后点击2处 +号,选中3 jar的子菜单 点击4处"from modules with dependencise". 2. 进入下图:Module:选择你要打jar包的模块,MainClass:选择你main 函数所在的类 Jar files from libraries: 选中第一个打完包后是一
-
SpringBoot应用jar包启动原理详解
目录 1.maven打包 2.Jar包目录结构 3.可执行Jar(JarLauncher) 4.WarLauncher 5.总结 1.maven打包 Spring Boot项目的pom.xml文件中默认使用spring-boot-maven-plugin插件进行打包: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s
-
Android Studio 生成自定义jar包的步骤详解
想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理. 接下来就介绍下具体的步骤: 1.新建一个项目,项目名随意,eg:MakeJarApplication,在项目中新建一个module类型为android-library ,命名为testLibrary.如图: 项目结构图 2.让app依赖这个库,在app下的build.gradle文件中添加compile project(':testlibrary') dep
-
Flutter配置代理抓包实现过程详解
目录 背景 工具准备 配置Flutter代理 方式一.http请求库配置代理 web_socket_channel配置代理 方式二.重写原生方法 背景 在开发Flutter中,我们经常需要对网络请求进行调试,而Flutter自带的devtool的network又不太好用,有时会出现请求成功,但是又看不到response返回(难道是我姿势不对?).于是我就尝试通过抓包来查看请求 工具准备 安装charles 有时我们需要抓https的请求,此时用charles抓包的内容是加密的,看不到明文,这时候
-
IDEA生成可运行jar包(包含第三方jar包)流程详解
最近现网需要处理一下数据,来适配一个场景.安排我来编写一个脚本来实现,由于步骤比较多,且需要调用其他服务接口,使用shell脚本来实现比较困难,所以想到了使用shell脚本调用java可执行jar包的方式来实现,期间遇到了很多问题,因此写篇文章记录一下. IDEA创建Java项目 打开IDEA,左上角菜单项依次选择File--->New--->Project--->Java--->Next--->Next--->输入项目名称(test). 新的java项目就创建好了(不
随机推荐
- javascript仿163网盘无刷新文件上传系统
- JS按字节截取字符长度实例
- android实现缓存图片等数据
- Python网络编程中urllib2模块的用法总结
- Python开发微信公众平台的方法详解【基于weixin-knife】
- ASP之简化创建关闭记录集对象并创建使用简单的MSSQL存储过程
- C#开发微信门户及应用(3) 文本消息和图文消息应答
- Android2.3实现Android4.0风格EditText的方法
- MySql表、字段、库的字符集修改及查看方法
- javascript实现checkbox全选的代码
- 比较2个datatable内容是否相同的方法
- 在Python中处理日期和时间的基本知识点整理汇总
- 利用 Linq+Jquery+Ajax 实现异步分页功能可简化带宽压力
- Js 实现文字爬楼滚动效果 结合文本框
- 用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
- time_t tm timeval 和 时间字符串的转换方法
- mybatis基本实例详解
- JS传参及动态修改页面布局
- WIN7下网站用localhost可以访问改为ip不可访问如何解决
- JS表的模拟方法