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

SpringBoot:对外部文件使用PropertySoucre并使用java jar命令时的FileNotFoundException

Spring Boot是一个开源的Java框架,用于快速构建独立的、可执行的、生产级的Spring应用程序。它简化了Spring应用程序的配置和部署过程,提供了一种约定优于配置的方式。

对于外部文件的使用,Spring Boot提供了PropertySource来加载和管理属性文件。PropertySource是一个接口,用于表示属性源,可以从不同的地方加载属性,比如文件、环境变量、命令行参数等。在Spring Boot中,可以通过在application.properties或application.yml文件中定义属性,然后使用@Value注解或@ConfigurationProperties注解将属性注入到Java类中。

当使用java jar命令运行Spring Boot应用程序时,可能会遇到FileNotFoundException异常。这通常是因为应用程序无法找到指定的外部文件。为了解决这个问题,可以采取以下几个步骤:

  1. 确保外部文件存在:首先,确保外部文件存在于指定的路径中。可以使用绝对路径或相对路径指定文件的位置。
  2. 配置文件路径:在Spring Boot的配置文件(application.properties或application.yml)中,可以使用以下属性来指定外部文件的路径:
代码语言:txt
复制

spring.config.name=application

spring.config.location=file:/path/to/external/file/

代码语言:txt
复制

其中,spring.config.name属性用于指定配置文件的名称,spring.config.location属性用于指定配置文件的路径。可以使用逗号分隔的多个路径。

  1. 使用classpath路径:如果外部文件位于classpath中,可以使用classpath:前缀指定文件的路径。例如:
代码语言:txt
复制

spring.config.location=classpath:/config/

代码语言:txt
复制
  1. 打包文件:确保将外部文件正确地打包到可执行的jar文件中。可以使用Maven或Gradle等构建工具来配置打包过程。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

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

相关·内容

【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】

】   1.对于封装的jar中非提供给外界使用的方法,尽量将其设置为private   2.对于工具类中经常要使用的方法,可以设定为static,这样在使用过程中不用new一个对象再去引用,可以直接使用类名调用...文件功能类打包为Jar包,可以引入到项目中使用 1.先准备一个java文件 package com.sxd.util; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException...文件编译为class文件   1》【将java文件按照package的路径位置,放在对应的目录下】 ?   ...【问题:如果javac命令提示不是内部或外部命令,解决方法:https://www.cnblogs.com/sxdcgaq8080/p/11765252.html】 3.接下来就可以使用jar -cvf...5>好了,现在在pom.xml文件中引用,在项目中使用该jar包     pom.xml文件引入 <!

2K20
  • 一个很多人不知道的SpringBoot小技能!!

    其实,SpringBoot提供了一种机制,修改了application.yml的配置文件后,不需要重新编译并打包整个项目。前提是:不能把配置信息写死到你的Java代码里。...相信很多小伙伴第一时间就能够想到了,我可以在命令行启动项目时添加SpringBoot的配置参数呀,没错,这确实是一种方式。...例如,如果我们打包后的项目端口为8080,此时需要将8080端口修改为8888,那么我们可以使用如下命令启动SpringBoot项目时将端口修改为8888。...说直接点:就是 把项目的配置文件放在src目录以外,在服务启动脚本中指定外部配置文件的位置 比如,在Linux系统中部署SpringBoot项目时,我们可以按照如下方式部署。...spring.config.location=conf/application.yml 这个参数就是指定外部application.yml配置文件位置的参数,在运行jar包的命令中加入这个参数就可以指定

    2.2K20

    【Docker系列】SpringBoot 项目如何动态指定配置文件

    /logs/gc && java $JAVA_OPTS -jar ....这个属性可以在多种方式中设置,包括命令行参数、环境变量、系统属性等。 2.1 命令行参数 在启动 SpringBoot 应用时,可以通过命令行参数来指定配置文件的位置。...配置文件的搜索位置 SpringBoot 在寻找配置文件时,会按照一定的顺序搜索多个位置。...例如,如果我们有application-dev.properties和application-prod.properties两个配置文件,我们可以在启动时指定激活哪个配置文件: java -jar yourapp.jar...外部配置文件的使用 在微服务架构中,我们可能会将配置文件存储在外部系统,如配置中心或分布式配置服务中。SpringBoot 支持与这些外部系统集成,以动态获取配置信息。

    10210

    微服务架构学习Day01-SpringBoot入门

    在SpringBoot中默认jar包使用的是嵌入式tomcat,默认不支持jsp页面。...可以通过配置- -spring.config.location来改变默认配置位置:项目打包好以后,使用命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定的配置文件和默认加载的配置文件会共同起作用...外部配置的加载顺序 SpringBoot支持多种外部配置方式,优先级如下: 1.命令行参数(- -,多个命令用空格分开) 2.来自java:comp/env的JNDI属性 3.Java系统属性(System.getProperties...*属性值 由jar包外部向jar包内进行寻找: 优先加载带profile的: 6.jar包外部的application-{profile}.properties/yml(带spring.profile...)配置文件 7.jar包内部的application-{profile}.properties/yml(带spring.profile)配置文件 然后加载不带Profile的: 8.jar包外部的

    27020

    10-SpringBoot配置-项目外部配置加载顺序

    10-SpringBoot配置-项目外部配置加载顺序 项目外部配置加载顺序 外部配置文件的使用是为了对能不文件的配合 1.命令行 java -jar app.jar --name="Spring" --...#boot-features-external-config 1.命令行传参数的方式 java –jar xxx.jar --server.port=8083 1.1 首先将上一章节的项目打一个...jar 来启动看看 java -jar springboot-config-0.0.1-SNAPSHOT.jar 目前默认使用了配置文件的设置端口号8082,下面我们通过命令行传参的方式来启动,修改该端口号...1.2 使用命令行传参,设置启动参数 java -jar springboot-config-0.0.1-SNAPSHOT.jar --server.port=8086 可以看到我们已经设置成功了一个参数了...放到 D盘目录下: server.port=8090 server.servlet.context-path=/hello 2.2 命令行传入外部配置文件的路径 启动服务 java -jar springboot-config

    89720

    spring boot 使用maven和fat jarwar运行应用程序的对比

    使用maven和fat jar/war运行应用程序的对比 简介 上篇文章我们介绍了Spring boot的fat jar/war包,jar/war包都可以使用 java -jar 命令来运行,而maven...使用了自定义的ClassLoader来加载和定位所有的外部jar包依赖。并且所有的依赖jar包已经被包含在这个fat包里面了。...使用Maven命令来运行应用程序 要使用maven命令来运行应用程序可以在程序的根目录下面执行: mvn spring-boot:run 它会自动下载所需要的依赖,并运行,运行日志如下: mvn spring-boot...如何选择 既然有两种方式来运行应用程序,一种是使用mvn命令,一种是使用fat jar/war文件,那我们该怎么选择呢?...如果是在线上环境,那么我们就需要使用fat jar/war了,这样的外部依赖比较小,我们不需要在线上环境部署maven环境,也不需要源代码,只要一个java的运行时环境就可以了。

    1.6K10

    SpringBoot-打包&部署

    只要不关闭 cmd, 就会一直运行.如果是在 linux 中想要运行且在后台运行该 jar 包时, 使用如下命令, 返回的是其 pid 号.c 代码解读复制代码// 结尾的 & 表示在后台进程运行 /...打包之后, 配置文件的修改在将 SpringBoot 项目打成 jar 包之后, 配置文件也被加入到了 jar 文件里面, 无法再对其修改了, 但有时又有对其进行修改的需求, 这时, 不可能重新修改项目...来指定外部配置文件的位置.不过, 经过测试发现, 这种方式只支持 SpringBoot 本身存在的属性, 对我们自定义的属性配置好像无法覆盖....还是使用 JAR 包里面的配置.最后的解决方式 :编写项目时, 暂时将自定义的配置写在 application.yml 中.在准备打成 JAR 包的时候, 将所有的自定义的配置, 剪切到外部的 application.yml...lib 文件夹、第二次打包的 jar 包放在同一个目录下, 运行下面命令 就能成功运行.ini 代码解读复制代码// 指定 lib 位置java -Dloader.path=lib -jar xxxx.jar4

    22110

    Spring Boot 核心编程思想-第一部分-读书笔记「建议收藏」

    FAT Jar 和 FAT War 执行模块-Spring-boot-loader 问:为何 java -jar命令能够执行FAT Jar 文件呢?...答:java -jar 这个命令是Java 官方提供的,改命令引导的是标准可执行的JAR文件,根据Java官方文档规定: java -jar 命令引导的具体启动类必须配置在MANIFEST.MF 资源的...Spring boot 的FAT Jar是一个独立的归档文件,除了包含传统的 Java Jar资源外,还有依赖的JAR文件, 被java -jar 引导时,内部依赖的JAR 文件无法被JDK内建的jar...如果不使用Spring Boot ,要启动传统的 jar文件,如果jar文件依赖第三方的类库的话,启动命令 如下: -- java 命令 java -cp ".:....也就是JarLauncher 和 WarLauncher 本质上 无差别,建议 Spring boot应用使用非传统Web部署时,尽可能使用JAR归档的方式。

    92810

    Spring Boot 项目 Docker部署,并挂载配置文件到宿主机上

    0x01:简介 使用 Dockerfile 把 SpringBoot 的 jar 文件构建成镜像, 并且把外部配置文件挂载到了宿主机上方便后续更新。...编写 Dockerfile 文件 #添加Java启动的必要镜像 FROM java:8 #将本地文件挂载到当前容器 VOLUME /tmp #复制jar文件和配置文件所在的目录到容器里 ADD my-app.jar.../app.jar ADD conf /conf #声明需要暴露的端口 EXPOSE 8006 #配置容器启动后执行的命令,并指定使用项目外部的配置文件 ENTRYPOINT ["java...127.0.0.1:8006/printUserInfo 项目里的配置文件是 localUser,现在看到的是 devUser,代表镜像里的 jar 已经使用了外部的配置文件 0x04:挂载配置文件到宿主机...首先要在构建镜像的 Dockerfile 文件中启动 jar 的命令里加上 –spring.config.location=/conf/application.yml 指定使用容器里的 /conf/application.yml

    6.2K51

    SpringBoot---入门和配置

    主配置文件中激活不同环境的配置文件 命令行的方式激活===项目打成jar包 ,然后启动dos命令行的方式激活==以及使用虚拟机参数方式激活 SpringBoot配置Profile多环境支持可以看下面这篇文章...>spring-boot-maven-plugin 命令行使用java -jar的命令执行这个jar包即可,记住先要来到当前jar包对应的目录...(亲测有效) ---- 在application.yml主配置文件中激活不同环境的配置文件 命令行的方式激活=项目打成jar包 ,然后启动dos命令行的方式激活以及使用虚拟机参数方式激活 ----...spring可以从以下位置加载配置,优先级从高到低,高优先级的配置会覆盖低优先级的配置,所有的配置会形成互补配置 1、命令行参数 2、来自 java:comp/env 的 JNDI 属性 3、使用...--- 关于外部配置文件加载顺序推荐看下面这篇文章,上面记录的可能不够详细 Spring Boot 配置文件加载位置与顺序、外部配置文件加载顺序 ---- 项目打包时,只会打包main,java和

    90920

    超全、超详的Spring Boot配置讲解笔记

    springboot默认加载配置SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改。...使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。属性和值是大小写敏感的。...当需要对整个对象的整体进行赋值时,使用@ConfigurationProperties。...或者我们可以通过maven将项目打成jar包通过命令行使用以下命令来指定环境java –jar springboot02-0.0.1-SHAPSHOT.jar –spring.profiles.active...java –jar xxxx.jar –spring.config.location=配置文件路径外部配置加载顺序pringBoot也可以从以下位置加载配置;优先级从高到低,高优先级的配置覆盖低优先级的配置

    89520

    SpringBoot激活profiles你知道几种方式?

    多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。...命令行方式 命令行方式是一种外部配置的方式,在执行java -jar命令时可以通过--spring.profiles.active=test的方式进行激活指定的profiles列表。...Java系统属性方式 Java系统属性方式也是一种外部配置的方式,在执行java -jar命令时可以通过-Dspring.profiles.active=test的方式进行激活指定的profiles列表...> Java系统属性方式 > 系统变量方式 > 配置文件方式 经过测试命令行方式的优先级最高,而内部配置文件方式则是最低的。...激活多个profile 如果需要激活多个profile可以使用逗号隔开,如:--spring.profiles.active=dev,test 敲黑板划重点 每一个应用项目都会用到大量的配置文件或者外部配置中心

    89510

    解决SpringBoot jar包中的文件读取问题

    前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档、导出模版等),本地开发时可以正常读取 ,但是,当我们打成...jar包发布到服务器后,再次执行程序时就会抛出找不到文件的异常。...背景 这个问题是在一次使用freemarker模版引擎导出word报告时发现的。...通过仔细观察堆栈信息,我发现此时的文件路径并不是一个合法的URL(文件资源定位符)。原来jar包中资源有其专门的URL形式:jar:!/{entry} )。...所以,此时如果仍然按照标准的文件资源定位形式 File f=new File("jar:file:……"); 定位文件,就会抛出java.io.FileNotFoundException。

    3.1K21

    Java面试——Spring Boot

    一、谈谈你对 SpringBoot 的理解 ---- 简单说说我的理解:Java是一个静态语言,相比动态语言,它相对笨重,体现在我们搭建 SSM 框架写一个 Helloword 的时候相当复杂,需要写一大堆的配置...这意味着Spring Boot 将查看应用程序中存在的依赖项,属性和 Bean,并根据这些依赖项,对属性和 bean进行配置。...在部署环境中 Spring Boot 对比 Spring的一些优点包括: ■ 提供嵌入式容器支持; ■ 使用命令 java -jar独立运行 jar; ■ 在外部容器中部署时,可以选择排除依赖关系以避免潜在的...bootstrap 配置文件有以下几个应用场景:使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息...; 4、命令行指定的参数,如 `java -jar springboot.jar --name="Java技术栈"`; 5、命令行中的 `SPRING_APPLICATION_JSONJSON`

    85310

    SpringBoot2.x基础篇:灵活的使用外部化配置信息

    SpringBoot提供了内部配置application.yml文件的方式来进行全局配置,还支持使用profiles来激活不同环境下使用不同的配置文件,而这种方式毕竟是已经打包完成了,因此存在一定的局限性...我们来看看本章要讲到的外部配置的方式吧!!! 前言 SpringBoot提供了多种的外部化配置方式,主要是为了方便在不同的环境中运行相同的代码。...我们可以通过Properties文件、YAML文件、环境变量、命令行参数等来配置,获取配置的值时可以通过@Value注解进行注入,也可以使用@ConfigurationProperties注解进行层级结构化绑定到实体类的字段中...加载顺序 SpringBoot配置参数存在一定的顺序,当然对相同名称的属性配置,会因为加载的优先级存在覆盖,顺序如下所示: DevTools全局设置属性 @TestPropertySource注解...Java系统属性配置 Java系统属性的方式进行配置时,不仅使用@Value可以获取到属性值,使用java.lang.System#getProperty(java.lang.String)方法也是可以获取到的

    1.3K20

    Kubernetes官方java客户端之四:内部应用

    等; 概览 本文是《Kubernetes官方java客户端》系列的第四篇,以下提到的java客户端都是指client-jar.jar; 前文《Kubernetes官方java客户端之三:外部应用...除了前文中部署在外部的方式,还有一种常见场景:使用java客户端的应用自身也部署在K8S环境中,如下图所示,名为DemoApplication的SpringBoot应用部署在K8S环境内,调用java...官方java客户端之三:外部应用》的实战是一次常规的SpringBoot应用开发,本文的实战和前文略有不同,您需要对以下知识点有所了解: SpringBoot制作成docker镜像,首选官方推荐的方式,...上述命令执行成功后,镜像文件还只是在本机的docker仓库中,请放置到K8S环境可以访问的地方,我这里是在内网部署了镜像仓库Harbor,执行以下命令即可从本地仓库推送到Harbor(可能需要先登录,与...:30100/hello,如下图,可见当前K8S环境下所有Pod名称都返回了: 至此,SpringBoot应用通过K8S官方java客户端,成功获取了自身所在K8S环境的信息,通过前文和本章,咱们对

    87830

    用SpringBoot搭建简单电商项目 01

    前几节呢,我们已经简单介绍了SpringBoot框架的使用,从这一节开始,我们尝试着使用SpringBoot框架来一步一步搭建一个简单电商项目。...当然了,这不是真正的电商项目,你可以看成是一个CRUD案例,只是应用到了SpringBoot框架而已。 开发工具:eclipse 数据库:MySQL 1.新建项目 ? ? ? ?...你可以看到选择的pom文件是报错的,让我们打开pom文件一探究竟。 ? 说是缺失了web.xml文件,那么我们手动去添加一下。 ? 在这里新建一个WEB-INF文件夹: ?...SpringBoot的父依赖: org.springframework.boot spring-boot-starter-parent...大概的意思呢,就是说springboot自动帮我们注入DataSource了,而我们在yml文件里面还并没有配置数据库的连接信息,所以就报错了。

    2.1K80
    领券