Java类包管理工具——jar
来源:互联网 发布:c语言苏小红第八章答案 编辑:程序博客网 时间:2024/06/05 10:36
基础概念
JAR文件格式以流行的ZIP文件格式为基础,用于将多个文件聚集为一个文件。区别于ZIP文件的地方,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被类似的javac和java这样的工具直接使用。在JAR中包含特殊文件,如manifests和部署描述,用来指示工具如何处理特定的JAR。
为创建、管理JAR文件,可以使用作为JDK一部分的jar命令行工具(存在于JDK的bin目录下)。
常见的命令行有以下几个
1. jar cf jar-file input-file-list 用一系列文件创建一个jar文件
2. jar cf jar-file dir-name 用一个目录创建一个JAR文件
3. jar cf0 jar-file dir-name 创建一个未压缩的JAR文件
4. jar uf jar-file input-file 更新一个JAR文件
5. jar tf jar-file 查看一个JAR文件内容
6. jar xf jar-file 提取一个JAR文件内容
7. jar xf jar-file archived-file 从一个JAR文件中提取特定的文件
8. jar i jar-file 未JAR文件生成索引文件
9. java -jar jar-file 运行一个打包为可执行JAR文件的应用程序
常见应用场景1—— 可执行的JAR文件
进入该目录使用javac命令编译这些文件。-d参数用于指定编译产生的.class文件存放的路径。以
-d参数编译后的.class文件将自动按包名为目录结构进行组织。
javac -d .*.java(注意空格)
新建一个文本文件令名MANIFEST后缀是.MF内容是
Manifest-Version: 1.0
Main-Class: com.MyMainClass
接着以jar cvfm com.jar MANIFEST.MF com
当前目录下生成com.jar文件
最后执行这个jar文件
java -jar com.jar
执行效果如图
执行成功。
常见应用场景2——jar文件的索引
如果一个应用程序的class文件分散在多个jar文件中,那么类装载器就是用一个简单的线性搜索算法搜索类路径中的每一个文件,这可能需要类装载器下载并打开多个jar文件,直到找到所要的类或者资源。对于大型的需要下载到客户端执行的网络应用程序(如Applet),这会导致启动缓慢、相应迟缓和浪费宽带。
从JDK1.3以后JAR文件格式开始支持JarIndex索引机制,以优化网络应用程序中类的搜索过程,特别是Applet,JarIndex机制收集在,Applet或者应用程序中定义的所有JAR文件的内容,并将这些信息存储到第一个JAR 文件中的素引文件中。下载了第一个JAR文件后,Appet类装收器将使用收集的目录信息高效地装教剩余的JAR文件。这个目录信息存储在根JAR 文件的META-NF目承中个名为INDEX.LIST的特定的简单文本文件中。
例如使用命令行jar i first.jar two.jar
意思是把第一个jar文件作为索引添加到first.jar中,这是first.jar文件中就多出了一个INDEX.LIST的文件。
- Java类包管理工具——jar
- java开发中jar 包管理工具 Maven
- JAVA基础6.66——jar包
- java基础——包与jar包
- java类打成jar包
- Python包管理工具——Pip
- Python包管理工具——Pip
- iOS包管理工具——Cocoapods详解
- OS X包管理工具——Homebrew
- Python包管理工具——Pip
- Python包管理工具——Pip
- Python——包管理工具Pip
- Python包管理工具——Pip
- Python包管理工具——Pip
- yarn —— Nodejs包新管理工具
- java语言基础(50)——Eclipse导入和导出jar包,制作jar包说明书
- 黑马程序员—Java面向对象(异常处理机制、package包、import导入包、jar包)
- bat运行java程序——jar包的引入
- 让海绵宝宝失业的机器人汉堡厨师:能翻肉饼,还能烤洋葱
- jquery属性选择器
- 2017IT就业面试题
- 【Codeforces332E】Binary Key
- 关于安装Axure时,出现d3dcompiler_47.dll丢失报错的解决方法
- Java类包管理工具——jar
- 外媒关注中国电动车电池“换电”网络建成
- 华为手机进军美国冲击世界第二 机会与挑战并存
- ⚔疯狂输出⚔ 数组实现与链表实现
- 声学专家冯津伟入职阿里 正参与语音项目开发
- linux修改本机名
- 使用select2.js 时 根据val和text选中问题
- 项目实施流程和规范模板(测试方向)
- AI时代的攻与防