Java-jar包的创建与运行

简介: JAR文件的全称是Java Archive File,意思是Java档案文件。是一种压缩文件,与常见的ZIP压缩文件兼容。两者最大的区别是在JAR文件中默认包含一个名为META-INF/MANIFEST.MF的清单文件,这个文件是生成JAR文件时由系统自动创建的。Java中的许多类其实都是由jar包的形式提供的

jar包的概念

JAR文件的全称是Java Archive File,意思是Java档案文件。是一种压缩文件,与常见的ZIP压缩文件兼容。两者最大的区别是在JAR文件中默认包含一个名为META-INF/MANIFEST.MF的清单文件,这个文件是生成JAR文件时由系统自动创建的。

Java中的许多类其实都是由jar包的形式提供的

jar包的生成

在某个包中的目录下启动命令行窗口,并输入jar -cvf myfirstjar.jar cn

其中myfirstjar为jar包的名字,cn也不要忘记带上

在用的时候呢,你的文件里有很多个类,把这些类和他们的目录一起压缩到一个文件中给别人,会显得更专业,有条理。别人拿到这个jar包之后,只要让他的classpath 的设置中包含这个jar文件,java虚拟机,在装载类的时候,就会自动解压这个jar文件,并将其当成目录,然后在目录中查找我们所要的类及类的包名和所对应的目录的结构。

使用jar包的好处

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

什么情况下使用jar包?

当开发一个应用程序后这个应用程序包含了很多类,如果需要把这个程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个文件提供给别人使用。只要在别人系统的CLASSPATH环境变量中添加这个文件,则java虚拟机就可以自动在内存中解压这个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文件。

编译器创建

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

jar包的运行

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

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

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

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

添加进依赖

相关文章
|
1月前
|
Java 数据安全/隐私保护
JAVA包
JAVA包
12 0
|
1月前
|
Java 开发工具 Windows
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
|
1月前
|
网络协议 Java Nacos
Nacos报错问题之jar 包启动就报错误如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
|
1月前
|
Java Shell Docker
Docker启动后怎样运行jar包文件
Docker启动后怎样运行jar包文件
|
30天前
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
20 0
|
17天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
1天前
|
Java 测试技术 数据安全/隐私保护
滚雪球学Java(23):包机制
【4月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
14 3
滚雪球学Java(23):包机制
|
4天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
30 0
|
16天前
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
14 1
|
30天前
|
Java Maven Spring
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
43 0