这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式:

  1. 用IDEA自带的打包形式
  2. 用Maven插件maven-shade-plugin打包
  3. 用Maven插件maven-assembly-plugin打包

用IDEA自带的打包方式:

打开IDEA的file -> Project Structure,进入项目配置页面。如下图:

点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项。

进入Create JAR from Modules页面,按照如下图配置。

  1. 第一步选择Main函数执行的类。
  2. 第二步选择如图的选项,目的是对第三方Jar包打包时做额外的配置,如果不做额外的配置可不选这个选项(但不保证打包成功)
  3. 第三步需要在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包反编译为代码的多种方法相关推荐

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

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

  2. Android聚合SDK母包反编译出包教程

    文章目录 [前言] 一.SDK预处理 1.SDK资源合并 1.1.合并res目录下的资源 1.2.合并libs目录 1.3.合并assets目录 1.4.合并AndroidManifest.xml 1 ...

  3. java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法

    1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...

  4. jar包修改并重新打包,jar包反编译使用工具以及修改代码方法

    jar包修改并重新打包,jar包反编译使用工具以及修改代码方法 备忘: https://blog.csdn.net/tomcat_zhu/article/details/79240011

  5. Jar包反编译后修改源码再编译

    Jar包反编译后修改源码再编译 文章目录 Jar包反编译后修改源码再编译 1. 场景 2. 详细步骤 2.1 查看源码 2.2 生成源文件 2.3 构建项目 2.4 编译成jar包 3. 参考链接 1 ...

  6. jar包反编译,查看源代码【转载】

    亲测有效 jar包反编译,查看源代码_neverstopforcode的博客-CSDN博客_jar反编译

  7. apktool 反编译 java_APK文件使用ApkTool解包反编译和重新打包及签名

    前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...

  8. APK文件使用ApkTool解包反编译和重新打包及签名

    前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...

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

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

  10. Android APK包反编译详细步骤教程

    下载安卓apk包反编译软件: https://download.csdn.net/download/LordForce/87485642 1. 解压 dex2jar-2.0.rar 文件. 2. 将 ...

最新文章

  1. python官网下载步骤图解-下载及安装Python详细步骤
  2. 使用Java将项目插入DynamoDB表
  3. win7硬盘安装工具_如何重装电脑安装Win7 系统?最简单,最便捷的办法,值得收藏...
  4. 根据输入参数创建xml模板
  5. wifi协议_图解 802.11wifi协议
  6. 使用pip下载安装离线依赖包whl文件
  7. jdk环境变量的配置
  8. 数据结构——拓扑排序算法理解和实现
  9. 人工神经网络的论文及算法代码
  10. AETA地震预测 AI 算法大赛——Helloworld队比赛方案(亚军)
  11. 用批处理调用Rundll32添加打印机命令说明文件
  12. 八大地图API开发平台大比拼
  13. win10红警遇到的各种问题
  14. Golang观察者设计模式(十九)
  15. 一连上网就弹出广告窗,记录删除一些顽固文件
  16. 2021年中国机动车、汽车和新能源汽车保有量及驾驶人和驾驶证业务办理情况分析「图」
  17. 代理沙特SASO贸促会认证
  18. ASCLL字母表顺序
  19. CTF-WEB——HTTP Headers类型
  20. 关于近视眼手术网友的评价

热门文章

  1. Keil4 keil5兼容
  2. python实现K均值聚类算法
  3. c语言日程报告闹钟,可以闹钟提醒的日程表,日程闹钟提醒怎么弄
  4. 非主流字体输入法_魏大勋更博晒非主流自拍,粉丝的关注点却在他的字体上,太复杂了...
  5. 文章标题 CSU 1815 : Enterprising Escape(BFS--优先队列)
  6. liteIDE搭建Go Golang 开发环境图文详解
  7. Nifi从入门到精通(一)之 数据存储
  8. python程序代码翻译器手机版下载_只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公...
  9. 2022.7.11-7.17 AI行业周刊(第106期):竭尽全力,努力就好
  10. python操作cad的模块_怎么把freecad当python模块来用