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

news/2024/9/20 6:26:47/文章来源:https://www.cnblogs.com/oennn/p/18419337
  • 楔子:可能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或者运维的角度看开发经验的话,现象和原因不在一起,不能直观的看到,通过多次测试和长期观察也不能确定真正的原因。
    • 如果不了解原理,也没有实际的经验,只是单纯看别人的笔记或者博客。就算是自己上手试试,也几乎是盲人摸象。所以最好把原理现象操作总结在一起。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799537.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P2710 数列/P2042 [NOI2005] 维护数列

题意(以 P2710 为例)思路 使用 FHQ-Treap 进行求解,清晰明了。对于 insert,先将要插入的数建成一棵树,然后将这棵树放入 FHQ-Treap 中。 对于 delete,将要删除的树分离出来,然后把剩下的部分合并即可,将删除的树的树根丢到废弃节点的栈中以备以后使用(节约空间,不然 …

扩展分析C语言单双引号、反斜杠与注释

目录注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠\反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof(1)的大小是4 ?char…

扩展分析单双引号、反斜杠与注释

目录注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠\反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof(1)的大小是4 ?char…

C----函数递归之反汇编

环境 win10 vc6.0 debug 代码 关于求阶层问题:n!=n(n-1)!;(n-1)! = (n-1)(n-2)! 例如5!=5(4)! 4!=43! 3!=32! 2!=21 函数递归的出口是1,所以函数递归最重要的条件是去寻找递归的出口 int fun(int i) {int sum = 0;if (i == 1){return 1;}else{sum = i*fun(i-1);}return sum …

地平线占用预测 FlashOcc 参考算法-V1.0

1.简介 3D Occupancy Networks 的基本思路是将三维空间划分成体素网格,并对每个网格进行各类感知任务的预测。目前以网格为中心的方法能够预测每个网格单元的占用率、语义类别、未来运动位移和实例信息。3D occupancy 可以对道路障碍物进行更细粒度的划分,同时获取更精确的占…

手脱upx

其实已经是大一下刚开始的事情了,补个档 手动脱壳の新年快乐 查壳,有壳,UPXX32dbg打开文件,查看初始断点点击PUSHAD跟进,CTRL+*设置EIP,开始F8步过,寻找ESP寄存器第一次单个变红的地址此时的内存窗口开始步过第一次步过就发现ESP单个变红,右键跟进内存窗口然后在第一个…

使用firemin降低火狐内存占用

这些年一直使用火狐浏览器,之前一直在AMD平台的机器使用,没有遇到过内存占用过大的问题(可能也与平台无关)。现在在Intel CPU的机器上使用,时间一久,内存就占用很大。试过Firefox/内存消耗严重里面的办法,效果不明显。也试过修改about:config里面的一些选项,也没有达到…

代码随想录算法 - 回溯算法1

题目1 77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n = 4, k = 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]示例 2: 输入:n = 1, k = 1 输出:[[1]]提示:1 <= n <= 20 1 <= k…

错误

PID自己搭的时候,要注意积分模块的位置,搞不明白好久了,原来是我把积分模块的位置放错了。直接用增益模块不容易出错。

OSG开发笔记(三十):OSG加载动力学仿真K模型文件以及测试Demo

前言Osg需要打开模型文件,但是遇到显示动力学仿真的K模型文件,.k文件是一种描述材料属性的文件,比如密度、弹性模量等,该模型文件不是常规中间开放格式,无法直接支持,需要自定义解析并且重建三维模型。 Demo实际非常流程,因为视频转gif导致部分看起来不行:   交互流畅…

0918高数一千题,多元函数积分学

T17.第一型曲线积分空间形式 用斯托克斯公式化成第二型曲面积分 解第二型曲面积分,用高斯公式或者投影转换法,后者注意正负号,上正下负,前正后负 T18.换路径,但是x=1左半段不能化成lnx算 T19.求偏导就对对应字母求就行,不用对y导x T20.多元极值AC-B2>0A>0,极小 A<…