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) {
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章