发布java包运行提示找不到配置文件
2021/9/8 12:06:14
本文主要是介绍发布java包运行提示找不到配置文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
主要是因为jar包是一个单独的文件而不是文件夹,不能通过路径的方式来找到配置文件。
一个程序,在开发环境运行得好地地,发布成jar包后,一运行就报错,提示找不到配置文件。提示类似这样的错误:
FileNotFoundException: jar:file:/xxx-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/cert/loadFFmpeg.properties
但事实上,包里文件是存在的。究其原因,主要是因为jar包是一个单独的文件而不是文件夹,不能通过“file:***.jar!\BOOT-INF\classes!\loadFFmpeg.properties”这样的方式来定位jar包内的资源。
网上资源提供了修改示例:
原代码
SAXReader xmlReader = new SAXReader(); String path = URLDecoder.decode(this.getClass().getResource("/").getPath(), "UTF-8"); File xmlFile = new File(path + "/jdbcType.xml"); Document document = xmlReader.read(xmlFile);
改为
SAXReader xmlReader = new SAXReader(); InputStream xmlFile = this.getClass().getResourceAsStream("/jdbcType.xml"); Document document = xmlReader.read(xmlFile);
但我这里的方式静态的,没有this,咋改?其实更简单。
我的代码
原代码
public static <T> T load(String fileName, Class<T> cl) { InputStream is = null; String path = ""; try { path = ResourceUtils.getURL("classpath:").getPath(); path = URLDecoder.decode(path, "utf-8"); path = String.format("%s%s", path, fileName); is = new FileInputStream(path); } catch (FileNotFoundException e) { System.err.println(String.format("找不到配置文件:%s%s", path, fileName)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (is != null) { Properties pro = new Properties(); try { System.out.println("加载配置文件..."); pro.load(is); System.out.println("加载配置文件完毕"); return (T) load(pro, cl); } catch (IOException e) { System.err.println("加载配置文件失败"); return null; } } return null; }
修改后代码
public static <T> T load(String fileName, Class<T> cl) { /* public static final ProgramConfig config = load("loadFFmpeg.properties", ProgramConfig.class); fileName,配置文件名称;cl,读入配置内容的装填对象 */ InputStream is = cl.getResourceAsStream("/" + fileName); if (is != null) { Properties pro = new Properties(); try { System.out.println("加载配置文件..."); pro.load(is); System.out.println("加载配置文件完毕"); return (T) load(pro, cl); } catch (IOException e) { System.err.println("加载配置文件失败"); return null; } } return null; }
这篇关于发布java包运行提示找不到配置文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南