如何查看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/

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA中的toString()方法的用法

toString是Object类的方法&#xff0c;所有类都从Object类继承。如果你定义的类没有覆盖toString方法&#xff0c;则对象在调用toString方法时用的是Object类toString方法&#xff0c;返回的是“类名hashcode". System.out.println(obj)在参数是一个对象时&#xff0c;会首…

kotlin使用spring data jpa(一)

2019独角兽企业重金招聘Python工程师标准>>> 简单查询 spring data jpa是spring全家桶成员之一&#xff0c;用于操作各种数据库&#xff0c;下面写一个查询订单的简单示例 引入sqlserver驱动包及jpa所需包implementation(org.springframework.boot:spring-boot-star…

VC的函数修饰名

VC 中的修饰名(Decoration name) “C”或者“C”函数在内部&#xff08;编译和链接&#xff09;通过修饰名识别。修饰名是编译器在编译函数定义或者原型时生成的字 符串。有些情况下使用函数的修饰名是必要的&#xff0c;如在模块定义文件里头指定输出“C”重载函数、构造函数、…

You can‘t specify target table ‘XXX‘ for update in FROM clause

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff0c;意思大致是&#xff1a;在一条 sql 语句中不能先查出来部分内容&#xff0c;再同时又对当前表作修改。 解决方法&…

牛客网——最简真分数

题目描述 给出n个正整数&#xff0c;任取两个数分别作为分子和分母组成最简真分数&#xff0c;编程求共有几个这样的组合。输入描述: 每组包含n&#xff08;n<600&#xff09;和n个不同的整数&#xff0c;整数大于1且小于等于1000。 输出描述: 每行输出最简真分数组合的个数…

csvn(apache+svn)管理工具搭建

系统环境&#xff1a;centos7.4一、服务端下载这个文件并解压&#xff08;如果打不开&#xff0c;请下方留言&#xff09;https://pan.baidu.com/s/1miwdBc81、安装jdk,上传到服务器上&#xff0c;解压[rootslave2 opt]# tar -zxvf jdk-8u91-linux-x64.gz[rootslave2 opt]# vim…

java中程序执行顺序

①在java中执行顺序 一 静态初始化块 二 非静态初始化块 三 构造器 四 父类构造器 ② java中的赋值顺序 一 静态初始化块直接赋值 二 非静态初始化块直接赋值 三 父类继承的属性已赋值 四 静态变量声明时赋值 五 成员变量声明时赋值 六 构造器赋值 接下来我们用一个…

编程复杂性等级划分

摘要&#xff1a;相信开发人员一定对初级、中级、高级软件工程师这类词汇很熟悉吧&#xff01;你们是否对编程进行过等级划分&#xff1f;这个又是如何划分的呢&#xff1f;本文作者把编程复杂性从简到难化成27个等级&#xff0c;你同意这样的划分吗&#xff1f;通常来说&#…

对于抽象类的理解

这是我个人对抽象类的理解&#xff0c;为什么要有抽象类&#xff0c;因为我们在写某个类时&#xff0c;只能写出大概的一些属性和共性行为&#xff0c;并不能一下子写下所体现的具体细节&#xff0c;如我们学到的一个例子&#xff0c;我们人用打印机&#xff0c;可我们只知道打…

Spring中基于Java的配置@Configuration和@Bean用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Spring中为了减少xml中配置&#xff0c;可以声明一个配置类&#xff08;例如SpringConfig&#xff09;来对bean进行配置。 一、首先&am…

【实数二分/前缀和维护】Best Cow Fences

Poj 2018 Best Cow Fences 实数二分前缀和维护 调了一晚上&#xff0c; 但发现没什么注意事项orz 无输出只因eps定义成了int型QAQ哭唧唧 #include<cstdio> #include<iostream> using namespace std; const int sz 100010; double eps 1e-5; int n, f; double a[s…

json回显

第一种&#xff1a;用json的oData塞值 案例显示&#xff1a; list页面url带值 //活动基本信息修改 function updateProject() {   var selectRow $$.getSingleSelectRow(listId, "请选择你要操作的项目进行修改&#xff01;");   if(selectRow.activity_status&…

NoSuchElementException

在之前下项目的时候遇到这个.NoSuchElementException异常,当时我写到一个大类的结尾。但是编译器。从未报错。然而在运行的时候出现了这样的异常&#xff0c;非常头疼 &#xff0c;一到运行时候就报异常&#xff0c;我就上网搜索了一下&#xff0c;才明白&#xff0c;这是我的刚…

东方程序员怎么看西方程序员

摘要&#xff1a;东方程序员与西方程序员&#xff0c;彼此心中是什么样子呢&#xff1f;本文收集了东西方程序员对彼此的看法与各种印象&#xff0c;对于西方/东方程序员&#xff0c;你留有什么印象呢&#xff1f; 本文是作者根据StackExchange上的一个讨论贴&#xff1a;东方程…

Android开发 - 掌握ConstraintLayout(一)传统布局的问题

在传统的Android开发中&#xff0c;页面布局占用了我们很多的开发时间&#xff0c;而且面对复杂页面的时候&#xff0c;传统的一些布局会显得非常复杂&#xff0c;每种布局都有特定的应用场景&#xff0c;我们通常需要各种布局结合起来使用来实现复杂的页面。随着ConstraintLay…

输入流与输出流的区别

stream结尾都是字节流&#xff0c;reader和writer结尾都是字符流两者的区别就是读写的时候一个是按字节读写&#xff0c;一个是按字符。实际使用通常差不多。在读写文件需要对内容按行处理&#xff0c;比如比较特定字符&#xff0c;处理某一行数据的时候一般会选择字符流。只是…

【Spring】Spring高级话题-@Enable***注解的工作原理

EnableAspectJAutoProxy 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 EnableAspectJAutoProxy注解 激活Aspect自动代理 <aop:aspectj-autoproxy/> 1 开启对AspectJ自动代理的支…

IDEA项目找不到浏览器报错的情况

调tomcat的时候&#xff0c;它会调用浏览器&#xff0c;浏览器关联如果有问题&#xff0c;肯定是会报错的 要是测试的时候&#xff0c;就是浏览器的问题&#xff0c;重新把浏览器装一遍让他自己重新关联一下应该就行了转载于:https://www.cnblogs.com/Koma-vv/p/10156478.html

c/c++经典面试试题及标准答案

下面的问题我想大部分c/c 程序员 都遇见过.如果没有看过&#xff0c;草根IT特别推荐一下。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。&#xff08;10分&#xff09;请写出 BOOL flag 与“零值”比较的 if 语句。&#xff08;3分&#xff09;标准答案&#x…

微服务拆分

微服务拆分是做微服务架构很重要也很难的话题&#xff0c;很多时候&#xff0c;几个服务是合还是拆在设计团队内也很难达成共识。 当你纠结应该拆分和合并时我建议就先合并&#xff0c;等后面版本迭代需要时有必要再去做拆分。从系统发展的角度说&#xff0c;很多平台也都是从单…