Java魔法堂:打包知识点之jar
一、前言
通过eclipse导出jar包十分方便快捷,但作为码农岂能满足GUI的便捷呢?所以一起来CLI吧!
二、JAR包
JAR包是基于ZIP文件格式,用于将多个.java文件和各种资源文件,或将多个.class和各种资源打包为一个文件。用于发布,部署,封装库、组件和插件程序,从而被编译器和JVM使用。
三、通过jar命令打包
1. 格式 jar [option]* 文件名
必选选项(并且仅能选用其中一个)
-c ,创建一个jar包
-t ,显示jar包中的内容列表
-x ,解压jar包
-u ,添加文件到jar包
可选选项
-v ,生成详细报告,并输出到标准输出设备
-m ,用于指定manifest.mf文件。(默认情况下会自动生成META-INF/MANIFEST.MF文件)
-O ,创建jar包时不对内容进行压缩
-M ,不自动产生manifest.mf文件
-i ,创建jar包时创建META-INF/INDEX.LIST索引文件
-C ,表示切换到指定目录来执行jar命令
-f ,指定jar包的文件路径
2. 常用示例
示例的目录结构:
/ |-- src | |-- test.class |-- META-INF | |-- MAINFEST.MF |-- MAINFEST.MF |-- other |--additional.class命令:
/* 1. 默认打包 */ // 生成的src.jar中就含src目录和jar自动生成的META-INF目录(内含MAINFEST.MF清单文件) jar -cvf src.jar src /* 2. 查看包内容(jar过大时就无法查看) */ jar -tvf src.jar /* 3. 解压jar包 */ jar -xvf src.jar /* 4. 提取jar包部分内容 */ jar -xvf src.jar src\test.class /* 5. 追加内容到jar包 */ //追加MAINFEST.MF清单文件以外的文件,会追加整个目录结构 jar -uvf src.jar other\additional.class //追加清单文件,会追加整个目录结构(src.jar会包含META-INF目录) jar -uMvf src.jar META-INF\MAINFEST.MF /* 6. 创建自定义MAINFEST.MF的jar包 */ jar -cMvf src.jar src META-INF // 通过-m选项配置自定义MAINFEST.MF文件时,自定义MAINFEST.MF文件必须在位于工作目录下才可以 jar -cmvf MAINFEST.MF src.jar src
三、通过Eclipse导出jar
在需导出的包、类上鼠标右键点击“Export”,然后选择“Java”下的“JAR file”,然后就是各种下一步就OK了。
四、可执行的JAR包
当jar包中包含可执行程序时,就可以通过 java -jar src.jar 命令来执行该可执行程序。打包的过程与上述操作无异,就是多了一步——配置META-INF/MAINFEST.MF文件。
关于META-INF目录以及META-INF/MAINFEST.MF清单文件的内容,将在《Java魔法堂:打包知识点之META-INF/MAINFEST.MF》中探讨。
Java缘起篇之配置环境变量 ## 什么是环境变量? 通俗点讲,配置环境变量就是把Java编译包 JDK放到一个所有软件都能看得到能调用的地方, 达到使用方便的目的,不配置环境变量,系统 就读取不了我们写的代码,编译不了,所以必 须要配置环境变量后才能编译我们的Java文件。
第六章 Java Gradle插件 我们已经知道,Gradle是一个非常灵活的构建框架,他提供了构建的基础核心,为了对具体的业务进行构建,Gradle在此基础上提供了插件的概念,这样就能基于Gradle进行很好的扩展,而不改变其核心基础,又能满足不同业务的需要,这也是我们在架构中参考的。
相关文章
- [Java] Java 打包成jar包 和 解压jar包
- [Java基础] java的守护线程与非守护线程
- 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4
- java web mysql.jar java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- Java实现 LeetCode 493 翻转对
- Java实现 LeetCode 64 最小路径和
- JAVA实现数据库数据导入/导出到Excel(POI)
- 深入介绍Java中的锁[原理、锁优化、CAS、AQS]
- 【JAVA】MacBook安装Java环境及eclipse
- Java客户端操作elasticsearch--创建索引(集群模式下)
- Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi..
- 产生 java.lang.NoClassDefFoundError 的另一种意外情况:jar包部分的物理性损坏
- JAVA_SE基础——24.面向对象的内存分析
- java - 项目启动时自动将jar包名称、路径、进程号信息写入指定的文件里
- 【“计算机科学与技术”专业小白成长系列】不会写 Java 代码怎么办?不用怕!有 Java API Examples :)
- java反射使用和源码解析
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
- java-mybaits-00701-与spring整合
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
- Java Instrumentation 内存马——主要是利用Instrumentation Java API来做内存注入,会用到反射机制,文中提到检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测
- JAR包分享之Oracle(java)数据库11.2.0.4 JDBC驱动程序 jar包 ojdbc6.jar ojdbc5.jar