springboot 打成的jar包在ClassLoader().getResource方法读取文件为null
1、属性文件如下:
10001=错误
2、文件读取主要代码
// getResource方式
URL resourceURI = getClass().getClassLoader().getResource("");
// getResourceAsStream方式
InputStream stream = getClass().getClassLoader().getResourceAsStream("errorCode.properties");
logger.info(">>>>>>>>>>>>>>>>>>>>>> errorCode stream " + stream);
logger.info(">>>>>>>>>>>>>>>>>>>>>> resourceURI " + resourceURI);
if (null == stream) {
logger.warn("errorCode.properties file not find");
return;
}
InputStreamReader reader = new InputStreamReader(stream,"UTF-8");
properties.load(reader);
Enumeration<?> keys = properties.propertyNames();
while(keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = properties.getProperty(key);
logger.info("key :" + key + "- value:" + value);
}
2.1 使用idea启动读取测试
2.2 使用java -jar xxx.jar启动测试
从运行结果来看,使用getResourceAsStream方式可以读到jar中的文件,而使用getResource读取为空,在jar文件中查找资源和在文件系统中查找资源的方式是不一样的,尽量使用Stream流的方式操作资源文件。
使用spring-boot-maven-plugin插件打出的fat-jar是不可以作为其他应用的jar依赖的,因为无法向普通的依赖jar那样去读取jar中的一些文件,这个和spring-boot-maven-plugin打包机制有关,可以换成使用maven-jar-plugin插件替换进行成可运行的的jar
springboot 打成的jar包在ClassLoader().getResource方法读取文件为null的更多相关文章
- 使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- 【转载】使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- springboot打成的jar包如何在Linux上持久运行
一.首先说说在没有springboot的时候,项目是如何部署的? 1.动态web项目 动态web项目部署很方便,基本上上传文件到服务器的tomcat里面的webapps文件夹下即可完成部署.当然了,这 ...
- SpringBoot打成的jar包发布,shell关闭之后一直在服务器运行
1:可以编写shell脚本, 切换到执行的jar包目录,然后使用nohup 让改命令在服务器一直运行 #!/bin/bash cd /srv/ftp/public nohup java -jar l ...
- Maven将代码及依赖打成一个Jar包的方式
Maven可以使用mvn package指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
- springboot打包成jar包后找不到xml,找不到主类的解决方法
springboot打包成jar包后找不到xml,找不到主类的解决方法 请首先保证你的项目能正常运行(即不打包的时候运行无误),我们在打包时经常遇到如下问题: springboot打包成jar包后找不 ...
- Android中库项目、jar包等的使用方法
在软件开发过程中,程序代码的复用,是非常重要的概念.我们总是需要使用一些现有的模块.包.框架,或开发自己的模块.包.框架,来实现对程序代码的复用.比如在JavaWeb编程过程中,经常使用的Struts ...
- jar包生制作几种方法,jar包导出三种方法:eclipse导出、jar命令、FatJar插件
Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三 ...
- 22.访问jar包下资源路径里的文件
访问jar包下资源路径里的文件 因为打包路径和你构建的代码路径是有差异的,想要查看真实的路径情况,可以查看编译后的classes目录下的文件结构. 想要获取资源文件流: private InputSt ...
随机推荐
- 纪一次线上cms调优
过去也有对JAVA性能调优的分析,有过以下case: 1. JVM outOfMemory, 主要是使用jmap dump 出来 hprof,使用MAT进行分析 2. JVM outOfMemory, ...
- 手写MVC框架(一)-再出发
背景 前段时间把之前写的DAO框架(手写DAO框架(一)-从“1”开始)整理了一下,重构了一版.整理过程中看以前写的代码,只是为了了解实现,只是为了实现,代码写的有点粗糙.既然已经整理了DAO框架,索 ...
- AVR单片机教程——EasyElectronics Library v1.3手册
bit.h delay.h pin.h wave.h pwm.h tone.h adc.h button.h switch.h rotary.h pot.h ldr.h led.h rgbw.h se ...
- HBase 系列(一)—— HBase 简介
一.Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统. 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通 ...
- loj#10013 曲线(三分)
题目 #10013. 「一本通 1.2 例 3」曲线 解析 首先这个题保证了所有的二次函数都是下凸的, \(F(x)=max\{s_i(x)\}i=1...n\)在每一个x上对应的最大的y,我们最后得 ...
- 04、MySQL—数据基础操作
1.插入操作 本质含义:将数据以SQL的形式存储到指定的数据表(字段)里面 基本语法:向表中指定字段插入数据 Insert into 表名[(字段列表)] values(对应字段列表) 范例:向表中插 ...
- onActivityResult方法的使用
转发自:https://blog.csdn.net/hacker_crazy/article/details/78345450 在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回 ...
- 2017-07-25 PDO预处理以及防止sql注入
首先来看下不做任何处理的php登录,首先是HTML页面代码 <html> <head><title>用户登录</title></head> ...
- Grafana+prometheus+AlertManager+钉钉机器人
一.Grafana (1)安装Grafana的Linux环境 在官网下载windows的Grafana的压缩包到指定目录,解压缩Grafana压缩文件到包含当前Grafana版本的文件夹.将该文件夹解 ...
- angular js根据json文件动态生成路由状态
项目上有一个新需求,就是需要根据json文件动态生成路由状态,查阅了一下资料,现在总结一下发出来: 首先项目用到的是angular的UI-路由,所以必须引入angular.js和angular-ui- ...