终于等来了假期,也终于等来了团队学习,考试周来的时候真的很慌张,不只是因为考试,更是因为团队学习的中断,学习就应该一鼓作气,趁着精力旺盛,也趁着自己兴趣在这,复习的时候就怕玩游戏,小游戏也不行,毕竟比起学习来,游戏要有很大的吸引力,对于团队学习来说,复习周就相当于休息,一旦时间过长,就容易被转移注意力,好在现在回到正轨了。
最近潘老师在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 文件的全称 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
Java字节码类文件(.class)是Java编译器编译Java源文件(.java)产生的“目标文件”。它是一种8位字节的二进制流文件, 各个数据项按顺序紧密的从前向后排列, 相邻的项之间没有间隙, 这样可以使得class文件非常紧凑, 体积轻巧, 可以被JVM快速的加载至内存, 并且占据较少的内存空间(方便于网络的传输)。
用jd-gui反向解析一下.class文件:
通过图标我们可以知道,正如上面说的,.class文件是二进制文件,变量和类型放在前面,方法放在后面
我们看一下College.class存放的东西:
javap -v College.class
查看.class文件存放的二进制流信息并且了解他们的含义,请参考此博客:
深入理解JVM之Java字节码(.class)文件详解打包时,项目的.java文件经过编译器编译后生成.class文件,然后被打成压缩包,即jar包,当执行java -jar XXX.jar 命令时,java虚拟机再根据.class文件的内容进行编译。
本文作者: 河北工业大学梦云智开发团队 张文达