• SpringBoot项目jar包运行


    前言

    终于等来了假期,也终于等来了团队学习,考试周来的时候真的很慌张,不只是因为考试,更是因为团队学习的中断,学习就应该一鼓作气,趁着精力旺盛,也趁着自己兴趣在这,复习的时候就怕玩游戏,小游戏也不行,毕竟比起学习来,游戏要有很大的吸引力,对于团队学习来说,复习周就相当于休息,一旦时间过长,就容易被转移注意力,好在现在回到正轨了。
    最近潘老师在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: 
     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文件的内容进行编译。

  • 相关阅读:
    SCRUM站立会议
    燃尽图
    第一次作业----词频统计
    构建之法读感
    final 评论 II
    final 评论 I
    第十一周PSP
    学期回顾
    第十周PSP
    Gradle学习笔记
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13281976.html
Copyright © 2020-2023  润新知