共计 1685 个字符,预计需要花费 5 分钟才能阅读完成。
前言
终于等来了假期, 也终于等来了团队学习, 考试周来的时候真的很慌乱, 不只是因为考试, 更是因为团队学习的中断, 学习就应该一鼓作气, 趁着精力旺盛, 也趁着本人趣味在这, 温习的时候就怕玩游戏, 小游戏也不行, 毕竟比起学习来, 游戏要有很大的吸引力, 对于团队学习来说, 温习周就相当于劳动, 一旦工夫过长, 就容易被转移注意力, 好在当初回到正规了。
最近潘老师在 Alice 的我的项目上提交了一个这样的 issue:
而后来到研究生考试零碎看一下这个文件:
有一说一,没看懂,然而我感兴趣的是 jar 包,之前在团队汇报时就据说过这个名词,然而没有接触过,也不晓得是啥,而后就试着打包和运行我的项目
打包
首先在 POM.XML 文件中要有插件:spring-boot-maven-plugin
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
而后就是进入 POM.XML 文件所在的目录,而后执行语句:
mvn clean package -Dmaven.test.skip=true
最初会呈现
BUILD SUCCESS 字样,阐明打包胜利,而后在 target 文件中会生成 jar 包
由图标款式咱们能够晓得,所谓的 jar 包就是压缩包。
当然也能够应用命令:
mvn clean package
应用该命令后会进行测试,胜利后打包文件。
运行我的项目
想要把我的项目运行起来,只须要一句:
java -jar alice-0.0.1-SNAPSHOT.jar
(前面的 jar 包请依据本人系统生成的 jar 包名称填写)
jar 包
JAR 文件的全称 Java Archive File(Java 档案文件), 通常 JAR 文件是一种压缩格局,和 ZIP 格局兼容,与 ZIP 格局不同的是它 蕴含了一个名为 META-INF/MANIFEST.MF 的清单文件
解压 jar 包看一下它的构造:
(现场演示)
MANIFEST.MF 文件中有如下内容:
Manifest-Version: 1.0
Implementation-Title: alice
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: jincheng
Implementation-Vendor-Id: com.yunzhiclub
Created-By: Apache Maven 3.6.0
Build-Jdk: 1.8.0_172
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
ot-starter-parent/alice
对于创建者和版本号等信息。
关上实体文件,发现外面有如下文件:
结尾后缀均为.class
.class
Java 字节码类文件(.class)是 Java 编译器编译 Java 源文件(.java)产生的“指标文件”。它是一种 8 位字节的二进制流文件,各个数据项按程序严密的从前向后排列,相邻的项之间没有间隙,这样能够使得 class 文件十分紧凑,体积笨重,能够被 JVM 疾速的加载至内存,并且占据较少的内存空间(不便于网络的传输)。
用 jd-gui 反向解析一下.class 文件:
通过图标咱们能够晓得,正如下面说的,.class 文件是二进制文件,变量和类型放在后面,办法放在前面
咱们看一下 College.class 寄存的货色:
javap -v College.class
javap 命令次要用于反编译 java 的 class 文件
查看.class 文件寄存的二进制流信息并且理解他们的含意,请参考此博客:
深刻了解 JVM 之 Java 字节码(.class)文件详解
总结
打包时,我的项目的.java 文件通过编译器编译后生成.class 文件,而后被打成压缩包,即 jar 包,当执行 java -jar XXX.jar 命令时,java 虚拟机再依据.class 文件的内容进行编译。
本文作者:河北工业大学梦云智开发团队 张文达