20210325学习笔记1--解决了打包不生成jar文件的问题

对于菜鸟来说,网上的博客总是漏掉了一些关键步骤,我看了很多博客最终才成功把jar包打出来,用时长达2小时。过程记录如下,希望帮大家采坑。

顺便说一句啊,写代码真的要心绝对安静,否则你很难静下心来去解决这种问题,但是写代码要解决的就是这些琐碎的问题。从这个角度说,写代码绝对是修身养性,保持心灵宁静的最好方法了。

总结包括以下三部分:

  • 正确步骤:着急打出jar包的只看这个
  • 名词解释:知其所以然

正确步骤

1.首先要明白,想打出一个jar包,你的src目录下面必须有两样东西

  • META-INF目录(包含MAINFEST.MF文件)
  • 你的多个类文件

2.点击file--project  Structure--Artifacts--“+”jar from module---选择要打包的项目并设置好主类--然后选择copy to the output directory and link via manifest,点击ok;此时如果提示META-INF目录已存在,去把这个目录删了就好。

3.接下来就是重点坑了。META-INF目录其实是在src下面会自动生成的,但在如下Artifacts这个界面,却不会自动包含在jar里。这就导致了你build Artifcats的时候,打不出jar包,Out目录下面也不会出Artifacts文件夹,只有Prodcution目录。

4.这个META-INF是需要你手动加的,在MapReduce_Example.jar目录右键"create directory"名字叫META-INF,再在META-INF右键“Add Copy of”--“Directory Context”,选中src下面META-INF目录即可把内容拷贝过来。

5.回到idea主界面。点击Build→Build Artifacts(注意不是build project)…→选中你的模块→Build。等待输出结束了,可以在out目录中看到你的jar包。切换到jar包目录,运行 java -jar xxx.jar来运行你的程序把!

名词解释

如何理解概念,提炼概念重点。

  1. jar:jar是java专属的压缩文件,你可以直接用winrar或360解压他,会发现里面有META-INF(MAINFEST.MF)和java类。  本质类似于zip,其意义在于把多个java类及图像音频等组件打包到一个文件里,在http传输时只需请求下载一次提升效率。
  2. MAINFEST.MF:为什么要有这个?--》相当于jar里面所有文件的“详情单”,首先这里标明入口的主类,方便继续执行其他类和引用其他jar。(如下图)

原文地址:https://www.cnblogs.com/gen2122/p/14579418.html