首页
学习
活动
专区
工具
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文件引入 <!

1.8K20

一个很多人不知道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

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

SpringBoot中默认jar使用是嵌入式tomcat,默认不支持jsp页面。...可以通过配置- -spring.config.location来改变默认配置位置:项目打包好以后,使用命令行参数形式,启动项目的时候来指定配置文件新位置,指定配置文件和默认加载配置文件会共同起作用...外部配置加载顺序 SpringBoot支持多种外部配置方式,优先级如下: 1.命令行参数(- -,多个命令用空格分开) 2.来自java:comp/envJNDI属性 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外部

23620

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

10-SpringBoot配置-项目外部配置加载顺序 项目外部配置加载顺序 外部配置文件使用是为了能不文件配合 1.命令java -jar app.jar --name="Spring" --...#boot-features-external-config 1.命令行传参数方式 javajar 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

83620

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

使用maven和fat jar/war运行应用程序对比 简介 上篇文章我们介绍了Spring bootfat 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.4K10

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归档方式。

79610

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

5K51

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

83820

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

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

84820

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 敲黑板划重点 每一个应用项目都会用到大量配置文件或者外部配置中心

83910

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.2K20

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

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

80630

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`

81210

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

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

2.7K21

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

,以下提到java客户端都是指client-jar.jar; 前文《Kubernetes官方java客户端之三:外部应用》中,咱们开发了一个名为OutsideclusterApplicationSpringBoot...应用,该应用并未部署在K8S环境,而是远程访问K8S环境内部API Server,整体结构如下: [在这里插入图片描述] 除了前文中部署在外部方式,还有一种常见场景:使用java客户端应用自身也部署在...K8S环境中,如下图所示,名为DemoApplicationSpringBoot应用部署在K8S环境内,调用java客户端库APIK8S进行各种操作,整体结构如下: [在这里插入图片描述] 本文内容就是开发上图中名为...DemoApplication应用,并且部署在K8S环境中进行验证; 额外准备 前文《Kubernetes官方java客户端之三:外部应用》实战是一次常规SpringBoot应用开发,本文实战和前文略有不同...,咱们K8S官方java客户端已经有了基本认识,接下来实战会开启这个客户端更丰富能力; 关于容器和镜像环境 如果您不想自己搭建kubernetes环境,推荐使用腾讯云容器服务TKE:无需自建,

84950

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文件里面还并没有配置数据库连接信息,所以就报错了。

2K80

SpringBoot系列之外部配置用法简介

Springboot官方文档应经将这种用法做了比较详细描述:Springboot外部配置用法官方文档,所以本博客只简单介绍一下比较常用 尚硅谷有位老师这些用法进行梳理,整理出比较常用几种用法:...注意: 命令行配置方式 比如java -jar这种方式,多个属性之间用空格分开,properties里属性基本都能用,用法是属性项=属性值这种方法,举个例子: java -jar springboot-properties-config...如果都通过命令行这种方法,一个属性一个属性加,显然不太可行,所以可以在jar包所在文件夹下面加个application.properties/application.yml,然后再通过命令启动,就可以自动加载配置文件配置...包外部和内部,也可以分为带${profile}和不带${profile},profile可以参考我上篇博客:Springboot系列之profile多环境配置用法简介 一般来说jar外部配置优先级一般是高于...jar外部配置文件被加载优先级高于jar内部,${profile}配置文件被加载优先级高于没带${profile}配置文件 jar外部application-${profile}.properties

57530
领券