为了账号安全,请及时绑定邮箱和手机立即绑定

java.io.IOException:尝试从 JAR 访问 XML 文件时,流已关闭

java.io.IOException:尝试从 JAR 访问 XML 文件时,流已关闭

慕尼黑8549860 2023-04-26 13:55:16
我正在尝试将 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 文件的实际资源路径是什么。


查看完整回答
反对 回复 2023-04-26
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

忘了在更改后重新部署他的 .JAR 文件。现在完美运行


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信