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

我正在尝试将 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 库来执行此操作

这是我的文件所在的位置:

http://img2.mukewang.com/6448bcdb0001012102300172.jpg

这就是我试图阅读它的方式:

http://img2.mukewang.com/6448bce400011d7b06470028.jpg

基于这里的这篇文章


如果您想尝试,这是代码:



    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();

    }



慕尼黑8549860
浏览 94回答 2
2回答

慕妹3242003

假设 JAR 文件是以正常方式从项目创建的,那么该 XML 文件的正确资源路径将"/PhillPlugin.xml"不是"Resource/PhillPlugin.xml".假设它Class1.class在默认包中,并且您使用Class::getResourceAsStream,相对路径"PhillPlugin.xml"也应该有效。用于jar tvf your.jar检查 XML 文件是否在 JAR 中,以及 XML 文件的实际资源路径是什么。

元芳怎么了

忘了在更改后重新部署他的 .JAR 文件。现在完美运行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java