在springboot项目resource下增加了一个配置文件,在本地测试通过以下列子都可以正常读取
ResourceUtils.getFile("classpath:/ca/enterprise.xx");
在部署到测试环境的打成jar部署的docker容器里,报了一个错读取不到jar包中的文件。各种读取方法的尝试,最终使用以下方式可以正常读取
/** * 在jar包中读取对象 * @param enterpriseCerFilePath * @return * @throws IOException */ public String getSignCertByJarFile(String enterpriseCerFilePath) throws IOException { FileInputStream fileInputStream = null; InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; try{ InputStream stream = getClass().getClassLoader().getResourceAsStream(enterpriseCerFilePath); inputStreamReader = new InputStreamReader(stream); // 建立一个输入流对象reader bufferedReader = new BufferedReader(inputStreamReader); // 建立一个对象,它把文件内容转成计算机能读懂的语言 StringBuffer stringBuffer = new StringBuffer(); String line= bufferedReader.readLine().trim(); while (line != null) { stringBuffer.append(line); line = bufferedReader.readLine(); // 一次读入一行数据 } return stringBuffer.toString(); }catch(IOException ioe){ ioe.printStackTrace(); throw ioe; }finally{ if(null != bufferedReader) bufferedReader.close(); if(null != inputStreamReader) inputStreamReader.close(); if(null != fileInputStream) fileInputStream.close(); } } public String getSignCertByJarFile2(String enterpriseCerFilePath) throws IOException { FileInputStream fileInputStream = null; InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; try{ ClassPathResource ClassPathResource = new ClassPathResource(enterpriseCerFilePath); bufferedReader = new BufferedReader(new InputStreamReader(ClassPathResource.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); String line= bufferedReader.readLine().trim(); while (line != null) { stringBuffer.append(line); line = bufferedReader.readLine(); // 一次读入一行数据 } return stringBuffer.toString(); }catch(IOException ioe){ ioe.printStackTrace(); throw ioe; }finally{ if(null != bufferedReader) bufferedReader.close(); if(null != inputStreamReader) inputStreamReader.close(); if(null != fileInputStream) fileInputStream.close(); } }
先记录下解决方案,后续在写具体原因,jar包中的文件读取和在应用中的文件读取不太一样
相关推荐
在SpringBoot应用中,文件读取是一个常见的需求,但在打包成jar文件并部署后,由于文件不再位于文件系统中,而是被包含在jar包内部,所以传统的文件读取方式会失效。本文将深入探讨如何解决SpringBoot jar包中的文件...
在使用SpringBoot进行开发时,我们...通过以上知识点的介绍,我们可以解决SpringBoot应用打成jar包后无法读取resources目录下文件的问题,并且在处理数据时能够更加高效。希望这些内容能对大家在实际开发中有所帮助。
这里的`classpath:`前缀表示从类路径中查找资源,如果应用被打包成JAR,这个配置文件会被包含在JAR的根目录下`/config/`路径中。 然而,当配置文件位于JAR的嵌套目录,例如`META-INF/config/application.properties...
但是,这些目录都位于项目的 classpath 下,这意味着应用的文件资源不能和项目代码分开存储。这将导致项目打包困难,文件数据的备份变得复杂。 为了解决这个问题,我们可以使用 `spring.resources.static-locations...
spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:${web.upload-path} ``` 这样,在访问 `ip/pic/cat.jpg` 时,可以访问到服务器...
- **创建一个可执行jar**:介绍如何将应用打包成可执行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的资源和指南。 #### 四、使用 Spring Boot - **构建系统**: - **Maven**: - **继承starter parent*...
在Spring Boot项目中,开发人员经常遇到一个问题,即在将应用打包成WAR并部署到Docker容器时,无法访问在`src/main/resources`目录下的静态资源。这种情况通常发生在使用内嵌Tomcat作为应用服务器的Spring Boot应用...
Spring Boot默认在`src/main/resources`目录下的`application.yml`或`application.properties`文件进行加载。确保`application.yml`文件位于正确的位置,且包含在项目的构建输出中。 2. **类路径问题**: 在Java...
- **创建一个可执行jar**:介绍了如何将Spring Boot应用打包成独立的jar文件。 #### 三、使用SpringBoot - **构建系统**: - **Maven**: - **继承starter parent**:讲解了如何让项目继承Spring Boot提供的...
- **创建可执行jar**:介绍如何打包项目为可执行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的方向。 #### 四、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter-parent**:解释如何...
@TestPropertySource 注解、命令行参数、Java 系统属性(System.getProperties())、操作系统环境变量、打包的 jar 外的应用程序配置文件、打包的 jar 内的应用程序配置文件、@Configuration 类上的 @PropertySource...
7. **检查Maven或Gradle构建配置**:确保构建工具正确地将`logback-spring.xml`打包到最终的jar或war文件中。 通过以上步骤,一般可以解决`logback-spring.xml`不生效的问题。如果问题仍然存在,可能需要进一步检查...
这些文件通常被放置在项目的类路径下,然后被打包进jar文件。然而,这种做法并不总是适用于所有场景,特别是当需要对配置进行集中管理或在持续集成(CI)环境中时。 根据Spring Boot官方文档,外部配置文件可以有以下...
`target`目录是Maven编译后的输出目录,通常包含编译后的类文件、资源文件以及最终的打包文件。`.settings`目录存储了项目的特定IDE设置。而`src`则是源代码目录,其中可能包含了`main`和`test`两个子目录,分别存放...
创建一个可执行jar**:指导了如何打包项目为可执行的jar文件。 **12. 接下来阅读什么** - 指引读者如何继续深入学习Spring Boot的相关知识。 #### 三、使用Spring Boot **13. 构建系统** - **13.1. Maven**: ...
- **创建可执行jar**:指导如何打包项目成可执行的jar文件。 - **接下来阅读什么**:推荐了进一步学习的资料和方向。 #### 三、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter parent**:...
- **创建一个可执行jar**: 教授了如何将应用打包成一个可执行的JAR文件。 #### 三、使用Spring Boot ##### 3.1 构建系统 - **Maven**: - **继承starter parent**: 介绍了如何继承starter parent POM。 - **使用...
- **创建可执行JAR**:打包项目为可独立运行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的主题和资源。 #### 四、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter-parent**:使用...