今天有人问到 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。

打开之后发现里边只有:

Manifest-Version: 1.0
Class-Path:

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

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

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 里边还可以放啥,可击上面文字中提供的的连接。好长一片英文,感兴趣的话,慢慢看吧。

META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗的更多相关文章

  1. XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件

    XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件:使用时源盘符.源目标路径名.源文件名至少指定一个:选用/S时对源目录下及其子目录下的所有文件进行COPY.除非 ...

  2. C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指定文件夹

    项目需求: 局域网内有两台电脑,电脑A(Windows系统)主要是负责接收一些文件(远程桌面粘贴.FTP上传.文件夹共享等方式),希望能在A接收文件后自动传输到电脑B(Windows系统)来做一个备份 ...

  3. [转帖]XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件

    XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件 https://www.cnblogs.com/smartsmile/p/7665979.html xcopy dirA dir ...

  4. Django配置静态文件(CSS\js)及Django调用JS、CSS、图片等静态文件

    1 新建一项目: root@python:django-admin.py startproject csstest root@python:cd csstest root@python:ls csst ...

  5. Java处理ZIP文件的解决方案——Zip4J(不解压直接通过InputStream形式读取其中的文件,解决中文乱码)

    一.JDK内置操作Zip文件其实,在JDK中已经存在操作ZIP的工具类:ZipInputStream. 基本使用: public static Map<String, String> re ...

  6. 文件的上传(1)(表单上传和ajax文件异步上传)

    文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...

  7. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

  8. Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)

    1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...

  9. php如何将数组保存为文件的方法? 三个方法让你快速把数组保存成为文件存储

    php 缓存数组形式的变量,实际上就是将 php 将数组写入到一个文本文件或者后缀名为 .php 存储起来,使用的时候直接调用这个文件.那么如何使用 php 将数组保存为文本格式的文件呢?下面分享三种 ...

随机推荐

  1. Bootstrap 3 Datepicker 使用过程

    最近在创建记录的时候,需要用到日历的功能.本身是使用的bootstrap布局的,所以就找到Datepicker,看了一下用起来还是挺方便的.下面就是使用过程. 依赖的资源 jQuery Moment. ...

  2. nodejs httpserver

    用nodejs服务器去拿取后台的数据.(我刚开始学的nodejs的时候是一个蒙圈的宝宝 t.t,开始接触的时候,在本地搭建去拿数据.之前菜鸟的我都不知道路由是神马[囧囧]). --> index ...

  3. SharePoint常用目录介绍

    SharePoint常用目录介绍 stsadm命令管理程序目录:C:\Program Files\Common Files\Microsoft Shared\web server extensions ...

  4. rewrite规则中参数多于9个的处理方式 apache nginx

    RewriteRule ^index-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)(.*)$ $9&a ...

  5. IE8兼容性经验小结

    DOCTYPE 首先需要确保HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响: 1.对标记,attributes, ...

  6. 。i节点

    http://blog.csdn.net/feiyinzilgd/article/details/5609157  linux中,文件查找不是通过文件名称来查找的.实际上是通过i节点来实现文件的查找定 ...

  7. C4.5学习及源码阅读

    下面是C4.5源码的下载地址: http://www.rulequest.com/Personal/ 这里先立一个flag,后续更新...... 恕我孤陋寡闻,第一次看到这样的主函数: #includ ...

  8. 已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一

    C# ASP.NET项目提示上述错误,在代码中使用分布式事务提示添加或修改到数据库的时候.添加数据到数据库时,不会设置实体类的主键字段.

  9. caffe安装:ubuntu16.04 + opencv2.4 + python 2.7+ CUDA 8.0 RC + CuDNN 5.0

    官方教程:http://caffe.berkeleyvision.org/install_apt.html 主要参考教程: https://github.com/BVLC/caffe/wiki/Ubu ...

  10. eclipse代码自动补全[转]

    一.每次输入都自动提示 设置Window->preferences->Java->Editor->Content Assist 再右下角Auto activation trig ...