慕尼黑8549860
2023-04-26 13:55:16
我正在嘗試將 XML 文件引用到我的項(xiàng)目中,以便我可以從中解析數(shù)據(jù)。它被導(dǎo)出為.jar文件,這意味著我無(wú)法使用它來(lái)引用它 BufferedInputStream in = new BufferedInputStream(new FileInputStream("PhillPlugin.xml"));當(dāng)我從JDeveloper IDE運(yùn)行它時(shí)它工作得很好所以我將上面的行替換為以下行:BufferedInputStream in = new BufferedInputStream(Class1.class.getResourceAsStream("Resources/PhillPlugin.xml"));但是當(dāng)我執(zhí)行.jar文件時(shí)java -jar test.jar在終端正在java.io.IOException: Stream closed被觸發(fā)。必須使用 Streams 而不是使用任何解析 XML 庫(kù)來(lái)執(zhí)行此操作這是我的文件所在的位置:這就是我試圖閱讀它的方式:基于這里的這篇文章如果您想嘗試,這是代碼: public static void main(String[] args) throws Exception { /*This is line 21*/ BufferedInputStream in = new BufferedInputStream(Class1.class.getResourceAsStream("Resources/PhillPlugin.xml")); StringBuilder sb = new StringBuilder(); String genurl=null; int cp; while ((cp = in.read()) != -1) { sb.append((char) cp); String t = sb.toString(); if(t.contains("</AttributeValuePair>")) { String test = sb.toString(); String test1p[]=test.split("<value>|</value>"); genurl=test1p[1]; break; } } System.out.println(genurl); sb=new StringBuilder(); while ((cp = in.read()) != -1) { sb.append((char) cp); String t = sb.toString(); if(t.contains("</AttributeValuePair>")) { String test = sb.toString(); String test1p[]=test.split("<value>|</value>"); genurl=test1p[1]; System.out.println(genurl); break; } } in.close(); }
2 回答

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
假設(shè) JAR 文件是以正常方式從項(xiàng)目創(chuàng)建的,那么該 XML 文件的正確資源路徑將"/PhillPlugin.xml"
不是"Resource/PhillPlugin.xml"
.
假設(shè)它Class1.class
在默認(rèn)包中,并且您使用Class::getResourceAsStream
,相對(duì)路徑"PhillPlugin.xml"
也應(yīng)該有效。
用于jar tvf your.jar
檢查 XML 文件是否在 JAR 中,以及 XML 文件的實(shí)際資源路徑是什么。
添加回答
舉報(bào)
0/150
提交
取消