我有一个错误 - SAXParseException:文件过早结束 - 仅在运行我的.jar文件时:(当你运行main.class时 - 一切都很好。
我试了很长时间才明白原因,但遗憾的是还没找到并且无法解决问题。
所以,朋友们,我很困惑,如果有人能提供帮助,我将非常感激。
该计划的内容如下:
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;
}