错误 - 运行.jar时文件过早结束

时间:2015-09-15 12:59:14

标签: inputstream saxparseexception

我有一个错误 - SAXParseException:文件过早结束 - 仅在运行我的.jar文件时:(当你运行main.class时 - 一切都很好。

我试了很长时间才明白原因,但遗憾的是还没找到并且无法解决问题。

  1. 检查了一个xml文件(notepad ++,total commander) - 一切正常,没有额外的字符。
  2. 检查文件的编码,一切正常。
  3. 试图远离InputStream,但它对我没有帮助。
  4. 创建.jar文件并使用gradle和IntelliJ IDEA的标准方法,没有帮助......
  5. 所以,朋友们,我很困惑,如果有人能提供帮助,我将非常感激。

    该计划的内容如下:

    public ArrayList<Job> getJobsCfg() {
        ArrayList<Job> listJob = new ArrayList<>();
        try {
            InputStream is = this.getClass().getResourceAsStream("/config/cfgExecJobs.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(is);
            NodeList jobs = doc.getElementsByTagName("job");
            for (int i = 0; i < jobs.getLength(); i++) {
                Job job = new Job();
                listJob.add(job);
                Node jobNode = jobs.item(i);
                job.setName(jobNode.getAttributes().getNamedItem("name").getNodeValue());
                job.setCronTrigger(jobNode.getAttributes().getNamedItem("cronTrigger").getNodeValue());
                job.setEnable(jobNode.getAttributes().getNamedItem("enable").getNodeValue());
                NodeList params = jobs.item(i).getChildNodes();
                for (int j = 0; j < params.getLength(); j++) {
                    if (params.item(j).getNodeType() == Node.ELEMENT_NODE) {
                        Param param = new Param();
                        param.setName(params.item(j).getAttributes().getNamedItem("name").getNodeValue());
                        param.setValue(params.item(j).getAttributes().getNamedItem("value").getNodeValue());
                        job.getListParam().add(param);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listJob;
    }
    

    我试过没有InputStream:

        public ArrayList<Job> getJobsCfg() {
        ArrayList<Job> listJob = new ArrayList<>();
        try {
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse("src/main/resources/config/cfgExecJobs.xml");
            ...
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listJob;
    }
    

0 个答案:

没有答案
相关问题