• 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。(如下图)

  • 相关阅读:
    【C++ 学习笔记】 Vector
    【AWS】 AWS Free Usage Tier
    【C++ 学习笔记】 MFC CEdit
    【MySql】MySql安装和ODBC设置
    【C++ 学习笔记】 变量转换
    【Perl学习笔记】列表和数组
    【C++ 学习笔记】 值传递
    【Java 学习笔记】 MyEclipse各种细节
    【NLP】 向量空间模型
    【Linux】 Cygwin操作总结
  • 原文地址:https://www.cnblogs.com/gen2122/p/14579418.html
Copyright © 2020-2023  润新知