`
zhoumeng87
  • 浏览: 70336 次
文章分类
社区版块
存档分类
最新评论

springboot 打 jar 包后读取不到文件

 
阅读更多

jar:file:/D:/test/test/.metadata/.plugins/org.eclipse.wst.server.core/test/test/test/WEB-INF/lib/test-0.0.1-SNAPSHOT.jar!/ca.crt

在你的项目中可能经常会使用 ClassLoader.getSystemResourceAsStream 等方法来读取一个文件内容,使用 properties 来读取。
但是当你打包后会发现你程序出现了问题,这个时候怎么办呢?
** 解决 ** 可以尝试一下以下的代码来获取文件,内容可自行修改,逻辑比较简单,就是获取相对地址然后得到文件

   //s是地址+文件名 from fhadmin.cn
   private File loadNewFromResources(String s) {
       File file = new File( s);
 
        try {
            if (!file.exists()) {
                file.createNewFile();
 
                InputStream fileInput = SampleServerStartup.class.getClassLoader().getResourceAsStream( s);
 
                //java项目大全 fhadmin.cn
                //file = File.createTempFile(s,"");
                System.out.println(file.getPath());
                System.out.println(file.getCanonicalPath());
                System.out.println(file.getName());
                //System.out.println("length:"+fileInput.available());
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
 
                while ((len = fileInput.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                fileInput.close();
 
                //System.out.println(content); //from fhadmin.cn
 
                FileOutputStream fileout = new FileOutputStream(file);
                baos.writeTo(fileout);
 
                baos.close();
                fileout.close();
 
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file;
    }

为什么要这样处理,因为在你打包后通过 File f=new File (“上述路径 — 相对路径”); 来获取文件时会发现 FileNotFoundException

可以通过 getResourceAsStream()读取到文件流 — 只可读取

因为这不是文件资源定位符的格式 (在 jar 中资源有其专门的 URL 格式为: jar:!/{entry} )。
如果 jar 包中的类源代码用 File f=new File (相对路径); 的形式,是找不到文件资源的。

0
0
分享到:
评论

相关推荐

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

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

    springboot所需的所有jar包(非maven)

    在不使用 Maven 或 Gradle 的情况下,我们需要手动管理 SpringBoot 所需的 jar 包,这通常涉及到下载每个单独的依赖并将其添加到项目类路径中。"springboot所需的所有jar包(非maven)"这个资源包含了运行一个 ...

    springboot项目打成jar包后无法获取static下的静态资源文件的问题分析

    这个问题在开发和部署时非常常见,因为Spring Boot应用在运行时,会将静态资源打包到jar文件内部,直接使用文件路径读取方式将无法访问到这些资源。 首先,要理解Spring Boot应用打包后的资源访问机制。当Spring ...

    springboot 项目实现文件上传,显示,下载,打包为jar

    这里我们将深入探讨如何在Spring Boot项目中实现文件上传、显示和下载,并将其打包为可执行的JAR文件。 首先,文件上传通常涉及到接收用户通过HTTP请求提交的文件。在Spring Boot中,我们可以利用`MultipartFile`...

    动态加载jar包

    3. **读取jar文件**:使用`java.util.jar.JarFile`类打开jar文件,并遍历其中的条目。每个条目对应于jar内的一个文件,如类文件、资源文件等。 4. **加载类**:对于每个类文件,使用自定义类加载器的`defineClass()...

    SpringBoot如何读取war包jar包和Resource资源

    SpringBoot读取war包jar包和Resource资源 SpringBoot 中读取 war 包 jar 包和 Resource 资源是开发过程中的常见问题。下面是相关知识点的总结: 1. ClassLoader 获取资源文件 在 SpringBoot 项目中,使用 ...

    文件上传下载-springboot-demo.zip

    3. **文件读取**:使用`FileInputStream`打开文件,并将其内容流化到HTTP响应中。 4. **响应头**:添加Content-Disposition头,设置`attachment; filename=filename.ext`,这样浏览器就会提示用户保存文件,而不是...

    maven+springboot打成jar包的方法

    Maven+SpringBoot打成JAR包的方法 Maven是Apache软件基金会的一个开源项目,主要用于Java项目的自动化build、测试...使用Maven和SpringBoot可以轻松地将项目打成JAR包,并且可以根据需要选择不同的配置文件和JVM参数。

    spring boot加载第三方jar包的配置文件的方法

    在Spring Boot应用中,加载第三方jar包的配置文件是一个常见的需求,特别是在集成其他框架或库时。Spring Boot的设计理念是简化配置,但它同样支持加载外部的配置文件来满足复杂的应用场景。以下是如何在Spring Boot...

    spring-boot2.1.14 离线maven jar包

    4. 使用`mvn clean install`命令构建项目,此时Maven会从本地仓库读取已下载的jar包。 离线Maven仓库的使用对于大型企业或者网络环境受限的场景特别有用,它可以确保开发工作的连续性,避免因网络问题导致的开发...

    springboot在线展示pdf

    在本文中,我们将深入探讨如何使用SpringBoot框架与PDF.js库来实现在线展示PDF文档的功能。首先,让我们了解SpringBoot的基础知识,它是一个由Pivotal团队开发的Java框架,旨在简化新Spring应用的初始搭建以及开发...

    开发springboot项目所需要的完整的jar包

    在实际项目中,这些 jar 包的集成意味着开发过程中可能涵盖了数据库操作、Excel 数据处理、文件上传下载等多个功能模块,提供了一站式的解决方案,确保了项目所需依赖的完整性,避免了因依赖不全导致的编译或运行...

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

    当WAR文件被上传到Docker容器后,由于资源位于压缩包内部,因此不能直接访问。 解决这个问题有多种策略,这里介绍一种通过读取资源文件并将其存储为临时文件的方法: 1. 首先,尝试通过修改Spring Boot的配置文件...

    基于Springboot的文件管理系统源码

    《基于Springboot的文件管理系统源码详解》 在现代企业级应用开发中,文件管理是一项不可或缺的功能。Spring Boot,作为一款快速开发框架,以其简洁、高效的特点,深受开发者喜爱。本篇文章将深入探讨一个基于...

    Linux 运行jar包的几种方式

    第四种方法,结合标准输出和错误输出重定向,如`nohup java -jar spring-boot-demo.jar > springboot.log 2>&1 &`,这将把程序的标准输出(1)和标准错误(2)都重定向到`springboot.log`文件。`2>&1`表示将标准错误...

    java读写xlsx文件

    Apache POI的jar文件通常包含在`lib`目录下,如压缩包中的`lib`文件夹所示。你可以通过Eclipse的“构建路径”设置将其添加为库。 读取xlsx文件的基本步骤如下: 1. 引入必要的POI库: ```java import org.apache....

    普通spring boot jar包部署为windows service

    本话题主要围绕如何将一个普通的Spring Boot jar包部署为Windows服务,以及涉及到的关键工具和步骤。 首先,我们需要理解Spring Boot本身并不直接支持作为Windows服务运行,但可以通过第三方工具实现这一功能。在这...

    Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例

    在这个场景中,我们看到一个基于Springboot的应用程序结合了Hutool-db库,利用URLClassLoader来实现动态加载外部数据库驱动和数据池的jar包。这使得开发者可以在不重启应用的情况下更新或添加新的数据库连接和资源池...

    spring3.0 + jpa 需要的jar包

    2. **ojdbc14-10.2.0.3.jar**:这是Oracle JDBC驱动程序,如果你的应用程序需要连接到Oracle数据库,这个jar包是必不可少的。 3. **org.springframework.context-3.0.1.RELEASE-A.jar**:Spring上下文模块提供了一...

    Json需要的jar包

    引入这些jar包后,开发者可以在Java Web项目中方便地执行以下操作: - 将Java对象转换为JSON字符串,以便在网络上传输。 - 解析JSON字符串为Java对象,以便在服务器端处理数据。 - 验证和操作JSON数据结构,如查找...

Global site tag (gtag.js) - Google Analytics