java中jar包的生成与使用方式

 更新时间:2023年09月07日 17:16:55   作者:Mrkang1314  
这篇文章主要介绍了java中jar包的生成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

jar包的生成与使用

什么是jar包?

JAR文件的全称是Java Archive File,意思是Java档案文件。

是一种压缩文件,与常见的ZIP压缩文件兼容。

两者最大的区别是在JAR文件中默认包含一个名为META-INF/MANIFEST.MF的清单文件,这个文件是生成JAR文件时由系统自动创建的。

使用jar包的好处

  • 安全,可以对其进行数字签名,只让能够识别数字签名的用户使用里面的东西。
  • 加快下载速度;
  • 压缩,使文件变小,与ZIP压缩机制完全相同。
  • 包封装。能够让JAR包里面的文件依赖于统一版本的类文件。
  • 可移植性,能够在各种平台上直接使用。
  • 把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。

什么情况下使用jar包?

当开发一个应用程序后这个应用程序包含了很多类,如果需要把这个程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个文件提供给别人使用。

只要在别人系统的CLASSPATH环境变量中添加这个文件,则java虚拟机就可以自动在内存中解压这个jar包。

可以使用命令来创建也可以再编译器中创建

在编译器中创建

在这里选择带有主方法的类,点击OK;如果要打包普通的类,即没有带主方法,在这里不用选直接进行下一步点击OK

操作成功后可以在以下目录查看到生成的jar包

如何使用jar包

将生成的jar复制到想用的地方。

如复制到桌面上,然后打开命令窗口执行 java -jar jar包名

如果想在另一个工程中使用:

将刚才的jar包添加进新建的目录

添加进依赖

用命令创建

jar命令详解

  • jar cf test.jar test 不显示压缩过程将当前路径下的test路径下的全部内容生成一个test.jar文件,如果已经存在则被覆盖。
  • jar cvf test.jar test 显示压缩过程;
  • jar cvfM test.jar test 不生成清单文件;
  • jar cvfm test.jar manifest.mf test 自定义清单文件信息,m指定读取用户清单信息。清单文件是普通文本文件。
  • jar cvfm test.jar a.txt test 将清单文件中的key-value对提取到META-INF/MANIFEST.MF文件中。
  • jar tf test.jar 查看jar包内容;
  • jar tf test.jar > a.txt :如果jar包中的文件路径和文件非常多,用上一个命令就无法查看所有,所以用重定向将显示结果保存到文件中。
  • jar tvf test.jar :查看详细内容;
  • jar xf test.jar 解压,将jar文件解压到当前目录下;
  • jar xvf test.jar 解压,显示解压过程的信息;
  • jar uf test.jar Hello.class :更新test.jar中的Hello.jar文件,如果存在则覆盖,否则添加;
  • jar uvf test.jar Hello.class :更新时显示详细信息;

创建可用jar包

jar命令-e选项,该选项指定JAR包中作为程序入口的主类的类名。

jar cvfe test.jar test.Test test

上面的命令把test目录下的所有文件都压缩到test.jar包中,并指定使用test.Test类作为程序入口。

运行上面JAR包有两种方式:

  • java -jar test.jar
  • javaw test.jar

当创建JAR包时,所有类都必须放在与包结构对应的目录结构中。

就像上面-e选项指定的Test类,表明入口类为Test类。

因此在JAR包下包含Test.class文件。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JAVA正则表达式匹配多个空格的解决方案

    JAVA正则表达式匹配多个空格的解决方案

    这篇文章主要介绍了JAVA正则表达式匹配多个空格的解决方案,文中提到了()和[]本质的区别,本文给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • Java深入探究Object类的方法

    Java深入探究Object类的方法

    java继承中说到的Object类是java中一个特殊的类,所有的类都是直接或者间接的继承自Object类,即如果某个类没有使用extends关键字则默认是java.lang.Object类的子类,所以所有的类都可以使用Object类中定义的方法,下面介绍Object类的常用方法
    2022-05-05
  • Java中的ReentrantLock使用解析

    Java中的ReentrantLock使用解析

    这篇文章主要介绍了Java中的ReentrantLock使用解析,ReentrandLock即可重入锁,可重入锁解决的是重入锁定的问题,重入锁定指的是当一个线程执行逻辑时,需要两次获取锁,而该锁不可重入就会导致内部嵌套无法获取锁导致Reentrance Lockout发生,需要的朋友可以参考下
    2023-11-11
  • Java 字符串转float运算 float转字符串的方法

    Java 字符串转float运算 float转字符串的方法

    今天小编就为大家分享一篇Java 字符串转float运算 float转字符串的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • SpringAOP实现登录验证的操作代码

    SpringAOP实现登录验证的操作代码

    这篇文章主要介绍了SpringAOP实现登录验证功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Java设计模式中单一职责原则详解

    Java设计模式中单一职责原则详解

    这篇文章主要介绍了Java设计模式中单一职责原则详解,单一职责原则 (SRP) 是软件设计中的一个重要原则,它要求每个类只负责一个职责,需要的朋友可以参考下
    2023-05-05
  • 深入理解java中的重载和覆盖

    深入理解java中的重载和覆盖

    下面小编就为大家带来一篇深入理解java中的重载和覆盖。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • IntelliJ IDEA弹出“IntelliJ IDEA License Activation”的处理方法

    IntelliJ IDEA弹出“IntelliJ IDEA License Activation”的处理方法

    这篇文章主要介绍了IntelliJ IDEA弹出“IntelliJ IDEA License Activation”的处理方法,本文给出解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring中Controller和RestController的区别详解

    Spring中Controller和RestController的区别详解

    这篇文章主要介绍了Spring中Controller和RestController的区别详解,@Controller是标识一个Spring类是Spring MVC controller处理器,@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面,需要的朋友可以参考下
    2023-09-09
  • Java编程用栈来求解汉诺塔问题的代码实例(非递归)

    Java编程用栈来求解汉诺塔问题的代码实例(非递归)

    这篇文章主要介绍了Java编程用栈来求解汉诺塔问题的代码实例(非递归),具有一定参考价值,这里给大家分享下,供朋友们参考。
    2017-10-10

最新评论