META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗

META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗,第1张

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。

打开樱蠢之后发现里边只有:

Manifest-Version: 1.0

Class-Path:

瞬间变有疑问:这么少点信息,有啥作用。为啥上面那段英文说的这个文件这么的不可或缺。

于是我随便在项目的lib中找了一个jar文件commons-io-2.3.jar,打开,把里边的MANIFEST.MF文件拿出来,打开如下:

密密麻麻一大片,是一行行的,类似配置文件,前面一个'key' 后面一个‘value’

具体这些玩意有啥用,META-INF 里边还可以放啥,可击上面文字中提供的的连接。好长一片英文,感兴趣的话,慢慢看吧。

您巧粗好,使用 JDK 的 jar 命令打JAR 文件包时,毕宽兆这个 JAR 文件的内部目录结构为: \x0d\x0a|-- META-INF\x0d\x0a\x0d\x0a| `-- MANIFEST.MF \x0d\x0a`-- test \x0d\x0a`--Test.class\x0d\x0a这个是生成的jar文手租件中的部分,与电脑无关,可以删除的。希望能够帮到您

无论是在打 jar 或 war 包时,都会生成 META-INFO 这个文件夹。我们需要了解这个路径,丰富自己的知识框架。

官方一点的说法:META-INF 相当于一个信息包,目录中的文件和目录获得 Java 2 平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务 manifest.mf 文件,在打包时自动生成。

简单的说法:就是存储了项目的元信息,其中文件 manifest.mf 仅此一份,描述了程序核侍数的基本信息、谈迅 Main-Class 的入口、 jar 依赖路径 Class-Path 。

由于这个目录下的信息大多是项目构建时自动生成,所以在不必要的情况下,不建议使用这个目录或修改这里的文件。

当然,我们在学习或使用 spi 时,会用到 META-INFO 下的 services 目录,我们会在这个目录下建一个接口全限定名,内容为实现类的全限定的类名。这时我们算是直接使用了这个目录,在这种情况下打出 war 包,解析包后我们会发现 META-INFO/services 这个目录其实是放在了WEB应用的安全目录WEB-INF下。

所以结论是:基本不用从开发的角度不用过多去关心这个目录,也不要挑战自己去破坏这个路径。然而在 spi 的特殊情况下,还应遵循这种 JDK 内置的服务提改首供发现机制。

官方文档 : https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8153993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存