首页 > 编程语言 >java代码-编译-打包-执行_云原生时代笔记总结

java代码-编译-打包-执行_云原生时代笔记总结

时间:2024-09-18 21:12:29浏览次数:1  
标签:原生 插件 java springboot jar 编译 class 打包

  • 楔子:可能201几年开发的时候,有个ide,加上打包插件,就可以开发了,测试的时候war包扔到服务器容器里就可以跑起来了。
    • (而且没有做过批处理的小伙伴对jar包执行可能不甚熟悉,只见过web容器的目录结构和lib中的jar包。)
    • 但是2015年之后应该是全面进入,云原生时代。大量操作需要linux命令行和shell脚本。tomcat也内嵌到spring boot中去启动。
    • Java官网去找资料可能就一个helloworld
    • 网上的博客,都是遇到才写一个单一的打包命令。内容分散,治标不治本。
    • 所以我把java编译打包执行整理在一起。,然后和spring-boot打包也比较一下。

  • 编译-打包-执行步骤总结如下:
  1. 编写Java代码
  2. 编译class文件
    • javac -d destination_folder Helloxx.java multisource/*.java source_folder2/*.java -cp imported_neededcompile_neededxx.jar
  3. jar包打包或者war包
    • jar包就是class文件的压缩包,然后里面会有一个-MANIFEST.MF的元信息文件。可以包含或者不包含如main-class的配置。war包多了webapp类似这样名称的文件夹,给web服务器解压了之后使用,存放如web.xml的信息。
    • 3.1 不指定自己的manifest
      jar -cvf buildedfilexx.jar -C classfolder/xx/ . (-C 表示不复制源文件的文件夹目录,class文件都放在一个目录下,文件夹后面都带上/。. 表示当前文件夹下的class文件
    • 3.2 指定自己的manifest文
      jar -cvfm buildedfile.jar my_manifest.mf classfolder/
  4. 执行jar包
    • 4.1 java -cp "/xxx/jarfilefolder/filexx.jar;xx/classfolder" XXMainclassname
    • 4.2 有main-class配置,直接执行jar包
      java -jar xx.jar (和-cp不能同时使用。springboot采用这种方式启动
  5. maven普通打包,通过package指定jar或者war,然后是打包插件和compile插件里面做一些复制和排除的配置
  6. springboot比较
    • 一般都会有一个类里面有注解@SpringbootApplication,然后在这个类里面会有main方法,但是这个main方法不是最后打包出来的mainclass,mainclass一定是springboot自己打包设置出来的类作为入口。
    • 必须通过springboot的maven插件进行打包,然后看maven依赖中的starter是否带有web-starter,最后打包出来的虽然是jar包,但是jar里内嵌了服务器和打包出来的服务容器的目录。
    • 除了web,也可以有@CommandLineRunner的方法,springboot的maven插件打包的时候扫描代码中的注解,最后打包出来的jar也可以像上面的普通jar一样执行。

  • 结语 从sre或者运维的角度看开发经验的话,现象和原因不在一起,不能直观的看到,通过多次测试和长期观察也不能确定真正的原因。
    • 如果不了解原理,也没有实际的经验,只是单纯看别人的笔记或者博客。就算是自己上手试试,也几乎是盲人摸象。所以最好把原理现象操作总结在一起。

标签:原生,插件,java,springboot,jar,编译,class,打包
From: https://www.cnblogs.com/oennn/p/18419337

相关文章

  • java-----Stream流
    什么是Stream?Stream将要处理的元素集合看作一种流,在流的过程中,借助StreamAPI对流中的元素进行操作,比如:筛选、排序、聚合等Stream流的作用:结合了Lambda表达式,简化集合、数组的操作Stream流的使用步骤:    ①先得到一条Stream流(流水线),并把数据放上去  ......
  • [Java基础]Stream流
    当我第一次阅读Java8中的StreamAPI时,说实话,我非常困惑,因为它的名字听起来与JavaI0框架中的InputStream和OutputStream非常类似。但是实际上,它们完全是不同的东西。Java8Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合进行链状流式的操作。本文......
  • JDK21中找不到 javax.annotation.Resource 了?
    在JDK9及以后版本,特别是到JDK21,javax.annotation.Resource这样的类已经不再包含在标准的JDK中。原因是从JDK9开始,Java进行了模块化(ProjectJigsaw),并移除了部分与JavaEE(现在称为JakartaEE)相关的包,例如javax.annotation。为什么会找不到javax.annotation.Resourc......
  • 【JavaSE】--数组的定义与使用
    文章目录1.数组的基本概念1.1什么是数组1.2数组的创建及初始化1.2.1数组的创建1.2.2数组的初始化1.3数组的使用1.3.1数组中元素访问1.3.2遍历数组2.数组是引用类型2.1初识JVM的内存分布2.2基本类型变量与引用类型变量的区别2.3再谈引用变量2.4认识null3......
  • 【Java SpringBoot + Vue】打造专属动漫插画分享系统,四步掌握建站精髓,让动漫爱好者轻
    ......
  • 基于JAVA文件传输的计算机毕设源码+论文
    摘  要Abstract引  言1技术简介1.1Java语言1.1.4分布性1.3Java中输入/输出流概念1.5JBuilder集成开发环境介绍2系统分析2.1可行性分析2.2开发工具2.3需求分析3系统详细设计3.1系统的主要功能摘 要随着计算机网络技术的飞速发展,客户/服务C/S(Client/......
  • Java多线程-(线程的创建,线程安全,线程状态)
    第一章.创建线程的方式1.第一种方式_extendsThread1.定义一个自定义线程类继承Thread2.重写run方法(run方法是用于设置线程任务的)3.创建自定义线程类对象4.调用Thread类中的start方法(start方法:开启线程,jvm自动执行run方法)publicclassMyThreadextendsThread{......
  • 领导友好型数据展示:Java后端到可视化实战汇报
    舒一笑的网站:www.shuyixiao.cloud里面:面试八股文、BAT面试真题、工作内推、工作经验分享、技术专栏等等什么都有,欢迎收藏和转发。优化数据呈现:打造领导友好的数据库汇报方案在本次分享中,我将探讨一个完整的数据处理与可视化流程,旨在将复杂的系统日志信息转化为直观、易懂的图形展......
  • JavaSE——Java基础语法(黑马个人听课笔记)
    1.关键字介绍关键字:被Java赋予了特定含义的英文单词关键字的字母全部小写 常用的代码编辑器,针对关键字由特殊的颜色标记,非常直观2.常量2.1常量概述常量:在程序的执行过程中,其值不会发生改变的量(数据)  2.2常量的分类:字符串常量:被双引号包裹的内容整数常量:所......
  • Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
    #!/bin/bash#Cross-compileenvironmentforAndroidonARM64andx86##ContentslicensedunderthetermsoftheOpenSSLlicense#http://www.openssl.org/source/license.html##Seehttp://wiki.openssl.org/index.php/FIPS_Library_and_Android#andhttp:......