打包流程
1. 打开菜单栏File-Project Structure
![](https://img-blog.csdnimg.cn/20190408223648884.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
2. 点击Artifacts
![](https://img-blog.csdnimg.cn/20190408223932626.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
3. 点击 "+" - JAR - From module with depenencies
![](https://img-blog.csdnimg.cn/20190408224021365.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
4. 后弹出如下界面,自此开始,各种问题就来了
![](https://img-blog.csdnimg.cn/20190408224218375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
- 首先Module中,我SocketDemo的Module含有SocketDemo、SocketDemo_main、SocketDemo_test三个,一定要选择main
![](https://img-blog.csdnimg.cn/20190408224515344.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
- Main Class选择自己要打包的类(一个Module一个包下可能有多个类需要打包),我做了一个测试类Test
![](https://img-blog.csdnimg.cn/20190408224801798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
- JAR files from libraries 第一个选项只生成主类(main)的jar包,第二个选项不太清楚,看别的博客说是生成的jar包包含Module中引用的所有jar包,但选择第二个很大可能在以后的运行中出现问题,我反正是选的第一个
![](https://img-blog.csdnimg.cn/20190408231407246.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
- 接下来是 MF文件的存放目录,重点。不能使用默认目录,必须自定义目录,不然会运行错误,也不能使用src/main/resources这个目录(这个目录是我建project时自带的,也可能没有),自定义目录也不能在src/main下建名为resources的文件。于是我新建了resource
![](https://img-blog.csdnimg.cn/20190408225317586.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190408225633936.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
-
此时应该也必须有META-INF此文件,不然会运行错误。若JAR files from libraries选择src/main/resources目录,是没有META-INF文件的。Output directory是jar包的保存目录
![](https://img-blog.csdnimg.cn/20190408230110570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
5. 点击Build-Artifacts
![](https://img-blog.csdnimg.cn/20190408230230203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
6. 点击Build
![](https://img-blog.csdnimg.cn/20190408230427266.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
7. 此时Output directory便出现了jar包
![](https://img-blog.csdnimg.cn/20190408230600875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
8. 打开CMD窗口,运行jar包。一定要cd到jar包所在目录(Output directory),一定要使用java - jar jar包名称
![](https://img-blog.csdnimg.cn/20190408230959125.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE3NQ==,size_16,color_FFFFFF,t_70)
结束。欢迎一起交流~~~