tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 探索SpringBoot

  • 常用功能实现

  • Security认证授权

  • 扩展

  • 实战与注意事项

  • 其它

    • IDEA_SpringBoot搭建多模块项目
    • 解决IDEA创建SpringBoot项目没有Java8
    • 运行jar包相关
      • jar和war的区别
        • 定义和用途
        • 文件结构和内容
        • 部署和使用环境
        • 使用场景和应用类型
        • 总结
      • 通过参数运行jar
        • 指定端口
      • springboot的jar为何能直接运行
        • 普通的jar
    • 类命名的一些建议
  • 《SpringBoot》笔记
  • 其它
EffectTang
2024-11-06
目录

运行jar包相关

# 运行jar包相关

# jar和war的区别

# 定义和用途

JAR包 是一种通用的压缩格式,用于分发Java类文件和与之相关的元数据和资源。

WAR包 专用于Web应用程序,包含Servlet、JSP、HTML、JavaScript等网页相关文件。

# 文件结构和内容

JAR包 通常包含.class文件和应用程序库,以及配置文件如MANIFEST.MF。

WAR包 结构更为复杂,包括WEB-INF目录下的web.xml部署描述符、类文件、库文件等。

# 部署和使用环境

JAR包 可以在任何Java环境中使用,常见于桌面、服务器端应用。

WAR包 需要部署在支持Servlet和JSP的Web服务器或应用服务器上。

# 使用场景和应用类型

JAR包 适用于任何标准Java应用,如控制台应用、桌面应用或通用库。

WAR包 专为Web应用设计,适用于需要Web界面的项目。

# 总结

  • JAR 文件:适用于打包 Java 类库和独立的 Java 应用程序。
  • WAR 文件:适用于打包 Web 应用程序,部署在应用服务器上。

# 通过参数运行jar

# 指定端口

假设你的 JAR 包名为 app.jar,你可以使用以下命令来指定应用的运行端口,如: --server.port 参数来指定。

java -jar app.jar --server.port=8081
1

在这个例子中,--server.port=8081 参数告诉 Spring Boot 将应用的端口设置为 8081。

# springboot的jar为何能直接运行

如果我们要把Spring Boot (Spring Boot)应用打包成一个可运行的Jar (Jar)包,需要依赖官方提供的一个spring-boot-maven-plugin的插件。

如果,我们去掉spring-boot-maven-plugin插件,通过 mvn clean package 再打一次包。

打包依然会成功,包名也一样,但这时候你会发现,jar包的大小有着天壤之别,你会发现它很小(比如:只有3KB,之前的有17.7MB)。此外,我们通过java -jar 包名看能否启动成功,结果你会发现根本启动不了。

下列是对应的pom坐标

<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       	   <version>2.7.12</version>
       </plugin>
   </plugins>
</build>
1
2
3
4
5
6
7
8
9

下面是主要的实现步骤:

1.SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。

2.Spring Boot应用打包之后,生成一个Fat jar(jar包中包含jar),包含了应用依赖的jar包和Spring Boot loader相关的类

3.java -jar会去找jar中的manifest文件,在那里面找到真正的启动类;

4.Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载bootib下面的jar,并以一个新线程启动应用的Main函数。

# 普通的jar

普通的jar,加压后,就只是一些代码和字节码文件

上次更新: 2025/04/23, 16:23:16
解决IDEA创建SpringBoot项目没有Java8
类命名的一些建议

← 解决IDEA创建SpringBoot项目没有Java8 类命名的一些建议→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式