怎么查看jar包版本
jar包根目录里的META-INF目录下的MANIFEST.MF文件里一般有会记录版本信息,可以到这个文件里查看
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的MANIFEST.MF文件内容: 
Manifest-Version: 1.0 
Created-By: Apache Ant 1.5.1 
Extension-Name: Struts Framework 
Specification-Title: Struts Framework 
Specification-Vendor: Apache Software Foundation 
Specification-Version: 1.1 
Implementation-Title: Struts Framework 
Implementation-Vendor: Apache Software Foundation 
Implementation-Vendor-Id: org.apache 
Implementation-Version: 1.1 
Class-Path:  commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar struts-legacy.jar
如果我们把MANIFEST中的配置信息进行分类,可以归纳出下面几个大类:
一. 一般属性
1. Manifest-Version 
用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2. Created-By 
声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
3. Signature-Version 
定义jar文件的签名版本
4. Class-Path 
应用程序或者类装载器使用该值来构建内部的类搜索路径
二. 应用程序相关属性
1. Main-Class 
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
三. 小程序(Applet)相关属性
1. Extendsion-List 
该属性指定了小程序需要的扩展信息列表,列表中的每个名字对应以下的属性 
2. <extension>-Extension-Name 
3. <extension>-Specification-Version 
4. <extension>-Implementation-Version 
5. <extension>-Implementation-Vendor-Id 
5. <extension>-Implementation-URL
四. 扩展标识属性
1. Extension-Name 
该属性定义了jar文件的标识,例如Extension-Name: Struts Framework
五. 包扩展属性
1. Implementation-Title   定义了扩展实现的标题 
2. Implementation-Version   定义扩展实现的版本 
3. Implementation-Vendor   定义扩展实现的组织  
4. Implementation-Vendor-Id   定义扩展实现的组织的标识 
5. Implementation-URL :   定义该扩展包的下载地址(URL) 
6. Specification-Title   定义扩展规范的标题 
7. Specification-Version   定义扩展规范的版本 
8. Specification-Vendor   声明了维护该规范的组织 
9. Sealed   定义jar文件是否封存,值可以是true或者false (这点我还不是很理解)
六. 签名相关属性
签名方面的属性我们可以来参照JavaMail所提供的mail.jar中的一段
Name: javax/mail/Address.class 
Digest-Algorithms: SHA MD5 
SHA-Digest: AjR7RqnN//cdYGouxbd06mSVfI4= 
MD5-Digest: ZnTIQ2aQAtSNIOWXI1pQpw==
这段内容定义类签名的类名、计算摘要的算法名以及对应的摘要内容(使用BASE64方法进行编码)
七.自定义属性
除了前面提到的一些属性外,你也可以在MANIFEST.MF中增加自己的属性以及响应的值,例如J2ME程序jar包中就可能包含着如下信息
MicroEdition-Configuration: CLDC-1.0 
MIDlet-Name: J2ME_MOBBER Midlet Suite 
MIDlet-Info-URL: http://www.javayou.com/ 
MIDlet-Icon: /icon.png 
MIDlet-Vendor: Midlet Suite Vendor 
MIDlet-1: mobber,/icon.png,mobber 
MIDlet-Version: 1.0.0 
MicroEdition-Profile: MIDP-1.0 
MIDlet-Description: Communicator
关键在于我们怎么来读取这些信息呢?其实很简单,JDK给我们提供了用于处理这些信息的API,详细的信息请见java.util.jar包中,我们可以通过给JarFile传递一个jar文件的路径,然后调用JarFile的getManifest方法来获取Manifest信息。
更详细关于JAR文件的规范请见 
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html
中文说明 
http://www-900.ibm.com/developerWorks/cn/java/j-jar/
怎么查看jar包版本的更多相关文章
- (原创) Maven查看JAR包的依赖关系
		
如果是用命令行,可进入项目所在目录,然后输入: mvn dependency:tree ,来查看jar包依赖关系. 另外还可以在eclipse操作,如下图所示: 点击run后,开始输出JAR包依赖树. ...
 - 查看jar包内容
		
查看jar包内容 查看jar包内容的基本命令: jar tf jar-file 参数解释: The t option indicates that you want to view the table ...
 - java反射查看jar包中所有的类名方法名
		
不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...
 - maven五:查找jar包坐标,选择jar包版本
		
查找jar包坐标 以spring core的jar包为例,访问http://www.mvnrepository.com/ 在最上方中间,输入spring core,点击Search. 搜索结果第 ...
 - idea升级maven工程jar包版本和解决jar包冲突
		
原来用过eclipse的都知道,想要升级maven工程的jar包版本或者解决jar包冲突,直接在pom文件下的dependency hierarchy视图下右击冲突的jar包,将其exclude掉,然 ...
 - 如何查看 JAR 包的源代码
		
ava 项目的编译文件经常被打包成 JAR(Java Archive,Java 归档文件)文件,当然,作为学习,有时候也非常想看到这个 JAR 被打包前的源代码是怎么样的. 下面提供几种查看 JAR ...
 - 【Gradle】配置中引用的jar包版本后面自动加冒号导致引入jar包失败的问题/gradle中引用jar包版本不一致的问题/gradle中引用jar失败的问题  解决方法
		
idea中 gradle中 引用jar包,版本后面默认加:的问题 gradle中引用jar包版本不一致的问题 gradle中引用jar失败的问题 如上题目所示,三个问题其实都是同一样的简单又恶心,因为 ...
 - 统一管理jar包版本
		
<!-- 统一管理jar包版本 --> <properties> <spring.version>5.0.2.RELEASE</spring.version& ...
 - Jar包版本查看方法
		
原文: https://blog.csdn.net/u011287511/article/details/66973559 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目 ...
 
随机推荐
- Java NIO 读数据处理过程
			
这两天仿hadoop 写java RPC框架,使用PB作为序列号工具,在写读数据的时候遇到一个小坑.之前写过NIO代码,恰好是错误的代码产生正确的逻辑,误以为自己写对了.现在简单整理一下. 使用NIO ...
 - Java-NIO-Selector
			
扩展阅读: Java NIO类库Selector机制解析(上) Java NIO类库Selector机制解析(下) Java NIO的选择器 三个重要的类: 1,Selector 选择器,完成主要的选 ...
 - decimal类型保留两位小数
			
oj.PriceTop =Math.Round(Convert.ToDecimal(reader["PriceTop"]),2);
 - PostgreSQL rule view materialized view examples
			
warehouse_db=# create table tab_view(emp_id int not null,emp_name varchar(10),emp_city varchar(10)); ...
 - Leetcode: Remove K Digits
			
Given a non-negative integer num represented as a string, remove k digits from the number so that th ...
 - 传递闭包+二进制位运算+floyd(poj2570)
			
Fiber Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3125 Accepted: 1436 Des ...
 - ubuntu安装jdk遇到的问题:cannot execute binary file
			
安装完jdk,配置好环境变量出现如下状况: cannot execute binary file 问题原因: jdk的位数与ubuntu的系统位数不一致 jdk 64位 ubuntu 32位 然后通过 ...
 - jquery  stop
			
stop():停止当前活动的动画,但允许已排队的动画向前执行 stop(true):停止当前活动的动画,并清空动画队列:因此元素上的所有动画都会停止 stop(true,true):会立即完成当前活动 ...
 - java dom4j写入XML
			
引用的两个jar包 dom4j-1.6.1.jar jaxen.jar //=========================代码 import java.io.FileWriter;import j ...
 - 全志A20芯片用于启动的SD卡的布局
			
起始 大小 内容 0 8KB 存放分区表等 8 24KB SPL loader 32 512KB u-boot 544 128KB environment 672 352KB 保留 1024 - 用于 ...