我正在尝试将 XML 文件引用到我的项目中,以便我可以从中解析数据。它被导出为.jar文件,这意味着我无法使用它来引用它 BufferedInputStream in = new BufferedInputStream(new FileInputStream("PhillPlugin.xml"));当我从JDeveloper IDE运行它时它工作得很好所以我将上面的行替换为以下行:BufferedInputStream in = new BufferedInputStream(Class1.class.getResourceAsStream("Resources/PhillPlugin.xml"));但是当我执行.jar文件时java -jar test.jar在终端正在java.io.IOException: Stream closed被触发。必须使用 Streams 而不是使用任何解析 XML 库来执行此操作这是我的文件所在的位置:这就是我试图阅读它的方式:基于这里的这篇文章如果您想尝试,这是代码: 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贡献1824条经验 获得超6个赞
假设 JAR 文件是以正常方式从项目创建的,那么该 XML 文件的正确资源路径将"/PhillPlugin.xml"
不是"Resource/PhillPlugin.xml"
.
假设它Class1.class
在默认包中,并且您使用Class::getResourceAsStream
,相对路径"PhillPlugin.xml"
也应该有效。
用于jar tvf your.jar
检查 XML 文件是否在 JAR 中,以及 XML 文件的实际资源路径是什么。
添加回答
举报
0/150
提交
取消