Idea打包jar 及jar包反编译为代码的多种方法
这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式:
- 用IDEA自带的打包形式
- 用Maven插件
maven-shade-plugin
打包 - 用Maven插件
maven-assembly-plugin
打包
用IDEA自带的打包方式:
打开IDEA的file -> Project Structure
,进入项目配置页面。如下图:
点击Artifacts
,进入Artifacts
配置页面,点击 + ,选择如下图的选项。
进入Create JAR from Modules
页面,按照如下图配置。
- 第一步选择Main函数执行的类。
- 第二步选择如图的选项,目的是对第三方Jar包打包时做额外的配置,如果不做额外的配置可不选这个选项(但不保证打包成功)
- 第三步需要在
src/main
目录下,新建一个resources
目录,将MANIFEST.MF
文件保存在这里面,因为如果用默认缺省值的话,在IDEA12版本下会有bug。
点击OK
之后,出现如下图界面,右键点击<output root>
,点击Create Directory
,创建一个libs
,将所有的第三方JAR放进libs目录下。
成功之后,如下图所示:
放入之后,点击我们要打成的jar的名字,这里面是kafka-cps.jar
,选择classpath进行配置。
编辑的结果如下:
这里将所有的jar都写在libs/
里面。点击OK
,回到配置页面。
同时还注意在配置页面,勾选build on make
最后点击配置页面的OK
,完成配置。回到IDEA,点击Build->Build Artifacts
,选择build
就会生成我们需要的jar包。其位置在项目目录的out目录下/out/artifacts/kafka_cps_jar
。
下面放一个正确配置的清单文件内容
用maven-shade-plugin打包
上面的打包过程实在是过于的繁琐,而且也没有利用到maven管理项目的特色。为此,我们这里利用maven中的maven-shade-plugin
插件。在pom.xml
中,我们加入如下的信息来加入插件。
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><configuration><createDependencyReducedPom>true</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>Main.Main</mainClass></transformer></transformers></configuration></execution></executions></plugin>
这里面配置了一个`configuration`标签内容,在此标签下面 有一个transformer
标签,用来配置Main函数的入口( <mainClass>Main.Main</mainClass>
),当然此标签内容很复杂,不是上面写的那么简单,上面之所以如此简单,是因为在所有类中(包括第三方Jar)只有一个Main方法。如果第三方jar中有Main方法,就要进行额外的配置,上面这么配置,不一定能执行成功。
具体可以参见maven插件。
在加入这段代码到pom.xml之后,我们就可以用maven的命令去打包了。其指令如下:
mvn clean compile //清除之前target编译文件并重新编译
mvn clean package //对项目进行打包(因为配置过插件,所以jar包是可执行的)
mvn clean install //安装项目,然后就可以使用了
然后通过java -jar cps-1.0-SNAPSHOT.jar
运行。
如果使用IDEA的话,可以通过自带的maven管理工具代替执行上面的命令。如下图所示,依次点击蓝色的部分。
用maven-assembly-plugin打包
上面的方法,我们还需要点击很多命令去打包。这次利用一个新的插件,可以打包更简单。同样,在pom.xml中加入如下代码。上文的maven-shade-plugin
插件代码可以删除。最好不要写2个插件代码。
<plugin><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>Main.Main</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin>
这里同样配置了一个manifest标签来配置Main函数的入口。然后通过如下指令来实现打包。
mvn assembly:assembly
如果使用IDEA的话,可以通过自带的maven管理工具代替执行上面的命令。如下图所示,点击蓝色的部分。
然后通过执行java -jar cps-1.0-SNAPSHOT-jar-with-dependencies.jar
运行。
Java Decompiler
一个快速的Java反编译器
JD项目
“Java Decompiler项目”旨在开发工具,以便对Java 5“字节代码”和更高版本进行反编译和分析。
JD-Core是一个从一个或多个“.class”文件重构Java源代码的库。JD-Core可用于恢复丢失的源代码并探索Java运行时库的源代码。支持Java 5的新功能,例如注释,泛型或类型“枚举”。JD-GUI和JD-Eclipse包括JD-Core库。
JD-GUI是一个独立的图形实用程序,可显示“.class”文件的Java源代码。您可以使用JD-GUI浏览重建的源代码,以便即时访问方法和字段。
JD-Eclipse是Eclipse平台的插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部。
JD-IntelliJ是IntilliJ IDE的插件。
JD-Core,JD-GUI和JD-Eclipse是根据GPLv3许可证发布的开源项目。
JD-GUI
下载
JD-GUI的1.4.0-0.noarch.rpm(Linux)
JD-gui_1.4.0-0_all.deb(Linux)
JD-GUI-OSX-1.4.0.tar(OSX)
jd-gui-windows-1.4.0.zip(Windows)
JD-GUI是一个独立的图形实用程序,可显示“.class”文件的Java源代码。您可以使用JD-GUI浏览重建的源代码,以便即时访问方法和字段。
JD-的Eclipse
下载
jd-eclipse-site-1.0.0-RC2.zip
教程: jd-eclipse 的安装和使用
JD-Eclipse是Eclipse平台的插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部。
JD-IntelliJ
下载
1.dea上点开左上角File选项,
2.点击Settings选项
3.点击plugins选项 在插件搜索栏里搜 JD-IntelliJ 然后点击Install 就安装重启好了
JD-IntelliJ是由Brice Dutheil发起的IntelliJ IDEA插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部。目前,该项目正在开发中。
Idea打包jar 及jar包反编译为代码的多种方法相关推荐
- Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
欢迎关注方志朋的博客,回复"666"获面试宝典 java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在.今天就拜读了一篇相关的文章, ...
- Android聚合SDK母包反编译出包教程
文章目录 [前言] 一.SDK预处理 1.SDK资源合并 1.1.合并res目录下的资源 1.2.合并libs目录 1.3.合并assets目录 1.4.合并AndroidManifest.xml 1 ...
- java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法
1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...
- jar包修改并重新打包,jar包反编译使用工具以及修改代码方法
jar包修改并重新打包,jar包反编译使用工具以及修改代码方法 备忘: https://blog.csdn.net/tomcat_zhu/article/details/79240011
- Jar包反编译后修改源码再编译
Jar包反编译后修改源码再编译 文章目录 Jar包反编译后修改源码再编译 1. 场景 2. 详细步骤 2.1 查看源码 2.2 生成源文件 2.3 构建项目 2.4 编译成jar包 3. 参考链接 1 ...
- jar包反编译,查看源代码【转载】
亲测有效 jar包反编译,查看源代码_neverstopforcode的博客-CSDN博客_jar反编译
- apktool 反编译 java_APK文件使用ApkTool解包反编译和重新打包及签名
前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...
- APK文件使用ApkTool解包反编译和重新打包及签名
前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...
- Jar包加密,防止反编译
Jar包加密,防止反编译方法 XJar加密工具 XJar功能特性 使用方法(手动执行方式) 使用方法(Maven插件方式) exe4j加密工具 使用方法 jvmti加密工具 使用方法 参考 XJar加 ...
- Android APK包反编译详细步骤教程
下载安卓apk包反编译软件: https://download.csdn.net/download/LordForce/87485642 1. 解压 dex2jar-2.0.rar 文件. 2. 将 ...
最新文章
- python官网下载步骤图解-下载及安装Python详细步骤
- 使用Java将项目插入DynamoDB表
- win7硬盘安装工具_如何重装电脑安装Win7 系统?最简单,最便捷的办法,值得收藏...
- 根据输入参数创建xml模板
- wifi协议_图解 802.11wifi协议
- 使用pip下载安装离线依赖包whl文件
- jdk环境变量的配置
- 数据结构——拓扑排序算法理解和实现
- 人工神经网络的论文及算法代码
- AETA地震预测 AI 算法大赛——Helloworld队比赛方案(亚军)
- 用批处理调用Rundll32添加打印机命令说明文件
- 八大地图API开发平台大比拼
- win10红警遇到的各种问题
- Golang观察者设计模式(十九)
- 一连上网就弹出广告窗,记录删除一些顽固文件
- 2021年中国机动车、汽车和新能源汽车保有量及驾驶人和驾驶证业务办理情况分析「图」
- 代理沙特SASO贸促会认证
- ASCLL字母表顺序
- CTF-WEB——HTTP Headers类型
- 关于近视眼手术网友的评价
热门文章
- Keil4 keil5兼容
- python实现K均值聚类算法
- c语言日程报告闹钟,可以闹钟提醒的日程表,日程闹钟提醒怎么弄
- 非主流字体输入法_魏大勋更博晒非主流自拍,粉丝的关注点却在他的字体上,太复杂了...
- 文章标题 CSU 1815 : Enterprising Escape(BFS--优先队列)
- liteIDE搭建Go Golang 开发环境图文详解
- Nifi从入门到精通(一)之 数据存储
- python程序代码翻译器手机版下载_只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公...
- 2022.7.11-7.17 AI行业周刊(第106期):竭尽全力,努力就好
- python操作cad的模块_怎么把freecad当python模块来用