`

Springboot打包之后读取classpath下的文件

 
阅读更多

在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包中的文件读取问题实现

    在SpringBoot应用中,文件读取是一个常见的需求,但在打包成jar文件并部署后,由于文件不再位于文件系统中,而是被包含在jar包内部,所以传统的文件读取方式会失效。本文将深入探讨如何解决SpringBoot jar包中的文件...

    解决SpringBoot打成jar运行后无法读取resources里的文件问题

    在使用SpringBoot进行开发时,我们...通过以上知识点的介绍,我们可以解决SpringBoot应用打成jar包后无法读取resources目录下文件的问题,并且在处理数据时能够更加高效。希望这些内容能对大家在实际开发中有所帮助。

    spring读取jar中的配置文件

    这里的`classpath:`前缀表示从类路径中查找资源,如果应用被打包成JAR,这个配置文件会被包含在JAR的根目录下`/config/`路径中。 然而,当配置文件位于JAR的嵌套目录,例如`META-INF/config/application.properties...

    SpringBoot实现本地存储文件上传及提供HTTP访问服务的方法

    但是,这些目录都位于项目的 classpath 下,这意味着应用的文件资源不能和项目代码分开存储。这将导致项目打包困难,文件数据的备份变得复杂。 为了解决这个问题,我们可以使用 `spring.resources.static-locations...

    springboot部署linux访问服务器资源的方法

    spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:${web.upload-path} ``` 这样,在访问 `ip/pic/cat.jpg` 时,可以访问到服务器...

    springboot

    - **创建一个可执行jar**:介绍如何将应用打包成可执行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的资源和指南。 #### 四、使用 Spring Boot - **构建系统**: - **Maven**: - **继承starter parent*...

    Springboot项目打war包docker包找不到resource下静态资源的解决方案

    在Spring Boot项目中,开发人员经常遇到一个问题,即在将应用打包成WAR并部署到Docker容器时,无法访问在`src/main/resources`目录下的静态资源。这种情况通常发生在使用内嵌Tomcat作为应用服务器的Spring Boot应用...

    Springboot为什么加载不上application.yml的配置文件

    Spring Boot默认在`src/main/resources`目录下的`application.yml`或`application.properties`文件进行加载。确保`application.yml`文件位于正确的位置,且包含在项目的构建输出中。 2. **类路径问题**: 在Java...

    SpringBoot权威指南

    - **创建一个可执行jar**:介绍了如何将Spring Boot应用打包成独立的jar文件。 #### 三、使用SpringBoot - **构建系统**: - **Maven**: - **继承starter parent**:讲解了如何让项目继承Spring Boot提供的...

    springboot中文参考指南

    - **创建可执行jar**:介绍如何打包项目为可执行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的方向。 #### 四、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter-parent**:解释如何...

    简单了解springboot加载配置文件顺序

    @TestPropertySource 注解、命令行参数、Java 系统属性(System.getProperties())、操作系统环境变量、打包的 jar 外的应用程序配置文件、打包的 jar 内的应用程序配置文件、@Configuration 类上的 @PropertySource...

    SpringBoot之logback-spring.xml不生效的解决方法

    7. **检查Maven或Gradle构建配置**:确保构建工具正确地将`logback-spring.xml`打包到最终的jar或war文件中。 通过以上步骤,一般可以解决`logback-spring.xml`不生效的问题。如果问题仍然存在,可能需要进一步检查...

    Spring Boot常见外部配置文件方式详析

    这些文件通常被放置在项目的类路径下,然后被打包进jar文件。然而,这种做法并不总是适用于所有场景,特别是当需要对配置进行集中管理或在持续集成(CI)环境中时。 根据Spring Boot官方文档,外部配置文件可以有以下...

    简易聊天服务源代码,eclipse maven工程

    `target`目录是Maven编译后的输出目录,通常包含编译后的类文件、资源文件以及最终的打包文件。`.settings`目录存储了项目的特定IDE设置。而`src`则是源代码目录,其中可能包含了`main`和`test`两个子目录,分别存放...

    spring-boot中文文档1.4.X.pdf

    创建一个可执行jar**:指导了如何打包项目为可执行的jar文件。 **12. 接下来阅读什么** - 指引读者如何继续深入学习Spring Boot的相关知识。 #### 三、使用Spring Boot **13. 构建系统** - **13.1. Maven**: ...

    spring-boot中文参考手册

    - **创建可执行jar**:指导如何打包项目成可执行的jar文件。 - **接下来阅读什么**:推荐了进一步学习的资料和方向。 #### 三、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter parent**:...

    spring-boot-中文参考指南

    - **创建一个可执行jar**: 教授了如何将应用打包成一个可执行的JAR文件。 #### 三、使用Spring Boot ##### 3.1 构建系统 - **Maven**: - **继承starter parent**: 介绍了如何继承starter parent POM。 - **使用...

    spring-boot中文参考指南

    - **创建可执行JAR**:打包项目为可独立运行的JAR文件。 - **接下来阅读什么**:推荐进一步学习的主题和资源。 #### 四、使用Spring Boot - **构建系统**: - **Maven**: - **继承starter-parent**:使用...

Global site tag (gtag.js) - Google Analytics