META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗
今天有人问到 META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗,还有项目的META-INF下面一般会有个MANIFEST.MF 文件,都是干啥的。
百度搜了一下,基本找不到答案。于是上stakoverflow搜,得到如下答案:
If you remove META-INF from a jar then there is no MANIFEST.MF and so java -jar can't find the main class.
You can create jars without META-INF but when you are going to execute a jar a META-INF/MANIFEST.MF is required.
See http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
这句英文很简单,简单翻译如下:
如果你将Jar中的META-INF文件夹删除,那么jar文件里边就没有MANIFEST.MF文件。那么,java -jar就找不到main class.
没有META-INF你仍然可以创建一个Jar文件。但是,当你想要执行jar文件的时候,这个jar是需要具备 META-INF/MANIFEST.MF的。
我们在使用eclipse或者myeclipse新建项目之后,在项目中可以找到META-INF文件夹,下面有个MANIFEST.MF。
打开之后发现里边只有:
1 2 | Manifest-Version: 1.0 Class-Path: |
瞬间变有疑问:这么少点信息,有啥作用。为啥上面那段英文说的这个文件这么的不可或缺。
于是我随便在项目的lib中找了一个jar文件commons-io-2.3.jar,打开,把里边的MANIFEST.MF文件拿出来,打开如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | Manifest-Version: 1.0 Export-Package: org.apache.commons.io.output;version= "2.3" ,org.apache. commons.io.monitor;version= "2.3" ,org.apache.commons.io.filefilter;ver sion= "2.3" ,org.apache.commons.io.comparator;version= "2.3" ,org.apache. commons.io.input;version= "2.3" ,org.apache.commons.io;version= "2.3" Implementation-Title: Commons IO Built-By: ggregory Tool: Bnd- 1.50 . 0 Implementation-Vendor: The Apache Software Foundation Implementation-Vendor-Id: org.apache Specification-Title: Commons IO Bundle-License: http: //www.apache.org/licenses/LICENSE-2.0.txt Bundle-SymbolicName: org.apache.commons.io X-Compile-Target-JDK: 1.6 Implementation-Version: 2.3 Specification-Vendor: The Apache Software Foundation Bundle-Name: Commons IO Created-By: Apache Maven Bundle Plugin X-Compile-Source-JDK: 1.6 Bundle-Vendor: The Apache Software Foundation Build-Jdk: 1.6 .0_31 Bundle-Version: 2.3 . 0 Bnd-LastModified: 1334069963279 Bundle-ManifestVersion: 2 Bundle-Description: The Commons IO library contains utility classes, s tream implementations, file filters, file comparators, endian transfo rmation classes, and much more. Bundle-DocURL: http: //commons.apache.org/io/ Implementation-Build: tags/ 2.3 -RC1 @r1311772 ; 2012 - 04 - 10 10 : 59 : 15 - 0400 Specification-Version: 2.3 Include-Resource: META-INF/LICENSE.txt=LICENSE.txt,META-INF/NOTICE.txt =NOTICE.txt Archiver-Version: Plexus Archiver |
密密麻麻一大片,是一行行的,类似配置文件,前面一个'key' 后面一个‘value’
具体这些玩意有啥用,META-INF 里边还可以放啥,可击上面文字中提供的的连接。好长一片英文,感兴趣的话,慢慢看吧。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?