所谓FatJar,其实就是SpringBoot的一个jar包。对于SpringBoot的可运行jar包,其实是包含了项目所有依赖的,这种打包方式归功于SpringBoot的一个打包插件spring-boot-maven-plugin。这玩意就相当于是一个拦截器,在maven package后,将maven 打成的jar包变成fatJar,并保留原来的jar包为xx.original。各位看官,请看图! PS:...
Spring Boot Maven Plugin 上篇文章我们提到了Spring Boot Maven Plugin,通过使用该插件,可以有效的提高部署效率,并打包成为fat jar/war包。 在打包成fat jar/war包的时候,背后实际上做了如下的事情: 管理了classpath的配置,这样我们在运行java -jar的时候不用手动指定-cp 。 使用了自定义的ClassLoader来加载和定...
运行时项目的classpath包括app.jar中的BOOT-INF/classes目录和BOOT-INF/lib目录下的所有 jar,以及JAVA HOME下系统classpath的jar,无法在其运行的时候往 app.jar classpath 中增加文件。并且现阶段 spring boot 项目多以 RESTful API 接口形式向外提供服务,很少会动态解析 jsp 和其他外部模版文件,直接 webshell 文件...
SpringBoot FatJar 的设计,打破了标准 jar 的结构,在 jar 包内携带了其所依赖的 jar 包,通过 jar 中的 main 方法创建自己的类加载器,来识别加载运行其不规范的目录下的代码和依赖。 二、标准的 jar 包结构 打开Java 的 Jar 文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必...
使用Maven配置Spring Boot Fat JAR 在现代Java开发中,Spring Boot已成为构建微服务及Web应用的热门选择。而要将其打包为可直接运行的Fat JAR(即包含全部依赖的可执行JAR文件),我们可以使用Maven构建工具。本文将详细介绍如何配置Maven以生成Spring Boot Fat JAR。
在Spring Boot项目中打包fatjar(即包含所有依赖的jar包)是一个常见的操作,它可以让你的应用程序更加便于部署和运行。以下是具体的步骤和注意事项: 1. 配置pom.xml文件 在Spring Boot项目的根目录下找到pom.xml文件,并确保其中包含正确的打包插件和配置。以下是一个示例配置: xml <build> <plugins>...
从Spring Boot FatJar文件写漏洞的一次实践 前言# 今天在landgrey师傅的博客上看到一篇将Spring Boot FatJar任意写目录漏洞如何来GetShell的方法,因为在Spring Boot中处理逻辑的控制层Controller是通过注解等方式来添加进Spring容器中,已经摒弃了JSP的方式。这样的方式导致JSP就算上传在网站目录上也无法运行。直到今天看到...
Java Classpath 识别 Spring Boot Fat JAR 在Java 开发中,Classpath 是指 Java 程序在运行时查找所需类文件的路径。而 Spring Boot Fat JAR(又称为 Uber JAR)将所有依赖及类打包到一个 JAR 文件中。本文将探讨 Classpath 如何识别 Spring Boot Fat JAR,并提供一些示例代码来帮助理解。
JAR,即通常的可执行jar Main-Class:org.springframework.boot.loader.JarLauncher WAR,即通常的可执行war,需要的servlet容器依赖位于 Main-Class:org.springframework.boot.loader.warLauncher ZIP,即DIR,类似于JAR Main-Class:org.springframework.boot.loader.PropertiesLauncher ...
springboot fatjar 启动时添加 classpath 我们在服务器上部署时,通常需要将配置文件外部化,常规的做法就是将配置文件的目录(比如: /data/server/conf)添加到 jvm 的 classpath 里面,这样,应用启动后就可以从 classpath 下读取到配置文件了。 不同的打包方式(fatjar 和非fatjar),在启动脚本中添加 classpath 的...