首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读取Spring boot fat jar中的文件

读取Spring Boot fat jar中的文件是指从Spring Boot打包生成的可执行JAR文件中读取文件的操作。

Spring Boot打包生成的可执行JAR文件是一种可执行的Java Archive文件,其中包含了应用程序的所有依赖库和资源文件,可以独立运行,无需外部依赖。读取这种JAR文件中的文件可以通过Java的标准文件操作实现。

读取Spring Boot fat jar中的文件的步骤如下:

  1. 获取JAR文件路径:可以通过getClass().getProtectionDomain().getCodeSource().getLocation().toURI()方法获取当前运行的JAR文件路径。
  2. 创建JAR文件对象:通过java.util.jar.JarFile类的构造函数,传入JAR文件路径,创建JAR文件对象。
  3. 遍历JAR文件中的条目:使用jarFile.entries()方法获取JAR文件中所有的条目,并使用循环遍历每个条目。
  4. 判断是否为目标文件:对于每个条目,使用jarEntry.getName()方法获取条目的路径,判断是否为目标文件。
  5. 读取文件内容:如果是目标文件,使用jarFile.getInputStream(jarEntry)方法获取文件内容的输入流,然后可以使用标准的Java文件操作进行读取。

读取Spring Boot fat jar中的文件的示例代码如下(以读取位于JAR根目录下的config.properties文件为例):

代码语言:txt
复制
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class ReadFileFromJar {
    public static void main(String[] args) {
        try {
            // 获取当前运行的JAR文件路径
            String jarPath = ReadFileFromJar.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
            
            // 创建JAR文件对象
            JarFile jarFile = new JarFile(jarPath);
            
            // 遍历JAR文件中的条目
            for (JarEntry jarEntry : jarFile.entries()) {
                // 判断是否为目标文件
                if (jarEntry.getName().equals("config.properties")) {
                    // 读取文件内容
                    InputStream inputStream = jarFile.getInputStream(jarEntry);
                    Properties properties = new Properties();
                    properties.load(inputStream);
                    inputStream.close();
                    
                    // 使用文件内容
                    String value = properties.getProperty("key");
                    System.out.println(value);
                }
            }
            
            jarFile.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述示例代码通过Properties类读取了JAR中的config.properties文件,并获取了其中的某个属性值。

推荐的腾讯云相关产品和产品介绍链接地址:根据问题描述,不涉及云计算相关内容,因此无相关推荐。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用spring boot创建fat jar APP

现在有了spring boot,一切都变了,我们可以将web应用程序打包成fat jar包,直接运行就行了。 本文将会关注于怎么使用Spring Boot创建一个fat jar包。...如果你要在服务器上面永久运行该服务,即使登录用户退出服务器,则可以使用nohup命令: nohup java -jar fat jarfat war 在上面的例子...,所有的依赖jar包都会被打包进入这一个fat jar,如果你使用了tomcat,那么tomcat也会被打包进去。...但有时候我们还是需要打包成war包,部署在服务器,这种情况只需要将pom.xmlpackaging属性修改为war即可。... 如果你没有从spring-boot-starter-parent继承,那么你需要将main class添加到maven plugin

91510

Spring Boot - 瘦身大作战:优雅应对Spring Boot Fat Jar

Fat Jar 【pom.xml】 <?xml version="1.0" encoding="UTF-8"?...Boot任何Launcher NONE,将所有的依赖库打包,但是不打包Spring Boot任何Launcher 打包后观察下 jar大小 和 里面的内容 重点关注下Main-Class...它是jar文件实际Main-Class,用于设置适当URLClassLoader并最终调用main()方法 有三个启动器子类(JarLauncher,WarLauncher和PropertiesLauncher...它们目的是从目录嵌套jar文件或war文件(而不是在类路径显式文件)加载资源(.class文件等)。 对于JarLauncher和WarLauncher,嵌套路径是固定。...可以通过在loader.properties(这是目录,归档文件或归档文件目录逗号分隔列表)设置一个称为LOADER_PATH或loader.path环境变量来添加其他位置 概括一下: 启动器

51810
  • 解决SpringBoot jar文件读取问题

    前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码读取资源文件(比如word文档、导出模版等),本地开发时可以正常读取 ,但是,当我们打成...jar包发布到服务器后,再次执行程序时就会抛出找不到文件异常。.../BOOT-INF/classes!/templates/docxTemplate.docx 显而易见,这个异常告诉我们:没有找到文件,但是将jar包解压过后,发现这个文件是真真实实存在。...通过仔细观察堆栈信息,我发现此时文件路径并不是一个合法URL(文件资源定位符)。原来jar包中资源有其专门URL形式:jar:!/{entry} )。...解决 虽然我们不能用常规操作文件方法来读取jar资源文件docxTemplate.docx,但可以通过Class类getResourceAsStream()方法,即通过流方式来获取 :

    2.9K21

    Spring Boot -- 如何获取已加载JAR文件

    " } 打包成fat jar fat jarSpring Boot引入一种新格式,其打包后结构与war包比较类似,但是可以直接执行并不需要先解压再加载,打包后类似目录如下: BOOT-INF/classes...对于jar in jar因为并不是规范文件路径,因此无法使用File直接读取,那么该怎么读呢?要解决这个问题需要先了解Spring Boot是怎么做....利用Handler读取jar Spring Boot启动原理关键点是实现了jar in jar协议处理器org.springframework.boot.loader.jar.Handler,读取主要功能为...Handler实现openConnection方法,因此当在项目代码想要读取jar in jar格式架包,则可以用该Handler进行资源读取。...文章标题: Spring Boot -- 如何获取已加载JAR文件流 文章链接: https://mrdear.cn/2019/03/19/framework/spring/在jar获取jar文件

    5.5K10

    Spring Boot读取配置文件几种方式

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。...value():指定配置文件 encoding():指定编码,因为properties文件编码默认是ios8859-1,读取出来是乱码 factory():自定义解析文件类型,因为该注解默认只会加载properties...文件,如果想要指定yml等其他格式文件需要自定义实现。...二、Environment读取文件 配置文件我们继续用上面的两个,定义一个类去读取配置文件 ?...经验与坑 properties文件默认使用是iso8859-1,并且不可修改 yml文件加载顺序高于properties,但是读取配置信息时候会读取后加载 @PropertySource注解默认只会加载

    1.2K30

    Spring Boot读取配置文件几种方式

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。...这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体配置文件。...():指定编码,因为properties文件编码默认是ios8859-1,读取出来是乱码 factory():自定义解析文件类型,因为该注解默认只会加载properties文件,如果想要指定yml等其他格式文件需要自定义实现...一、@Value注解读取文件 新建两个配置文件config.properties和configs.properties,分别写入如下内容: zhbin.config.web-configs.name=Java...iso8859-1,并且不可修改 yml文件加载顺序高于properties,但是读取配置信息时候会读取后加载 @PropertySource注解默认只会加载properties文件 @PropertySource

    4.2K10

    使用SpringPropertyPlaceholderConfigurer读取文件

    简介 大型项目中,我们往往会对我们系统配置信息进行统一管理,一般做法是将配置信息配置与一个cfg.properties 文件,然后在我们系统初始化时候,系统自动读取 cfg.properties...配置文件 key value(键值对),然后对我们系统进行定制初始化。...对于这种情况可以将配置文件路径放在 java 虚拟机 JVM 自定义变量(运行时参数),例如:-Ddev.config=/dev.properties 寻找是本机根目录下 Spring中提供着一个...框架不仅仅会读取我们配置文件键值对,而且还会读取 Jvm 初始化一下系统信息。...配置文件配置,来将项目下对应 properties 文件加载到系统 * 并且经过特殊处理 db2.properties 不允许覆盖掉 db1.properties 相同 key

    2K30

    spring boot读取配置文件——获取配置参数

    一、背景 工作中经常会有一些参数需要配置,同时在代码里面需要用到,所有就需要配置类读取,然后在使用时候注入该类进行获取相关参数。...前面实现了spring boot相关下面内容,现在就来实现一下spring boot如何读取配置文件里面的参数。参考项目地址在文末。...(1)spring boot 2以上版本整合mybatis (2)实现启动项目时数据库表初始化,基于注解实现mybatis查询 (3)mybatis基于pagehelper插件实现分页功能 二、实现 1...(1)配置类需要加@Configuration注解,声明是配置类 (2)@PropertySource注解设置properities文件所在路径 (3)变量上面的@Value注解设置对应属性变量,冒号左边是映射属性文件键...(1)结果可以看出,address配置文件里面没有该值,返回了@Value注解配置默认值。

    1K10

    如何在 Jar 包外管理 Spring Boot 应用配置文件

    常见 spring boot 应用多是打包成 jar 包运行在服务器,这包含了一系列配置文件以及第三方依赖,不过这也引发了常见思考:除application.properties之外其它配置文件变动...先来看看 Spring Boot 是如何加载核心配置文件,在org.springframework.boot.context.config.ConfigFileApplicationListener内部类.../BOOT-INF/classes!/ 因为java -jar所指定及对应优先级是最高,所以启动时设定 classpath 就可以达到想要效果:将配置文件Jar 包独立出来进行管理。.../resources/ demo.jar,观察启动日志是否可以读取 logback 配置: ?...测试 参考链接 springboot项目实现jar包外配置文件管理 -jar参数运行应用时,设置classpath方法

    2.2K20

    Spring Boot 6 种API请求参数读取方式

    使用Spring Boot开发API时候,读取请求参数是服务端编码中最基本一项操作,Spring Boot也提供了多种机制来满足不同API设计要求。...接下来,就通过本文,为大家总结6种常用请求参数读取方式。如果你发现自己知道不到6种,那么赶紧来查漏补缺一下。...,用来加载URL路径参数 比如:这个请求/user/1 就可以如下面这样,使用@PathVariable来加载URLid参数 @GetMapping("/user/{id}") @ResponseBody...,一般在业务系统不太使用,但在基础设施建设中会比较常用,比如传递分布式系统TraceID等。...此时,服务端读取Cookie数据时候,就可以像下面这样用@CookieValue来读取CookieSessionId数据 @GetMapping("/user") @ResponseBody()

    27900
    领券