Java工程读取resources中资源文件路径问题,jar中的文件无法读取

Java工程读取resources中资源文件路径问题,jar中的文件无法读取

问题描述

现象

作为一个刚开始学习java的新人,很多东西都是摸着石头过河,踩坑是常有的事。这不,今天我将maven管理的一个spring boot的WebAPP部署到服务器上,运行直接报错!纳尼!!!本地跑得好好的,一到服务器就出问题,关键是日志文件中的日志不全,无法马上定位到问题。好吧,一步一步排除问题吧!

定位

是不是windows与linux的区别?不是,我在windows上跑了一下打包后的代码,也出问题了,打包前没问题,打包后出问题了,包有毒!然后我开放了日志,一步一步调试(蛋疼啊),最终发现配置文件没有加载,路径出了问题。。。

前言

工程文件结构如下所示,目标是读取resources/python/kafka_producer.py文件
在这里插入图片描述

1、本地运行读取资源文件

采用getResource进行读取:

URL urlPath = this.getClass().getResource("/python/kafka_producer.py");
String execStr = String.format("python %s", urlPath.getPath().substring(1));

它是在target文件中读取,这时文件是我们熟悉的文件。正常读取,运行。

2、读取jar包中的文件信息

InputStream is=this.getClass().getResourceAsStream("/python/kafka_producer.py");
BufferedReader br1=new BufferedReader(new InputStreamReader(is));
String s1="";
while((s1=br1.readLine())!=null)
	   System.out.println(s1);

如果你需要运行脚本文件,这时是不能直接通过路径获取的,具体可以看博客点击。你需要重新将流写入文件中,在运行,当然,也可以打war包,不用jar包。如果读取配置文件有一下两种方式:

InputStream in = this.getClass().getResourceAsStream("/properties/basecom.properties");
Properties properties = new Properties();
properties.load(in);
properties.getProperty("property_name")

或者

    InputStream xmlFile = this.getClass().getResourceAsStream("/jdbcType.xml");
	Document document = xmlReader.read(xmlFile);
	Element xmlRoot = document.getRootElement();
	Element childElement = xmlRoot.element(dbType);
	List<Element> childElements = childElement.elements();
	for (Element child : childElements) {
	}

猜你喜欢

转载自blog.csdn.net/weixin_43229107/article/details/86642429