1

エラーがあります - SAXParseException: ファイルの早期終了 - .jar ファイルを実行している場合のみ :( main.class を実行する場合 - すべて素晴らしい。

長い間その理由を理解しようとしましたが、残念ながら問題を見つけることができず、解決できませんでした。

  1. xml ファイルをチェックしました (メモ帳 ++、トータル コマンダー) - すべて問題ありません。余分な文字はありません。
  2. ファイルのエンコーディングも確認してください。すべて問題ありません。
  3. InputStream から離れようとしましたが、役に立ちませんでした。
  4. .jar ファイルを作成し、gradle を使用して、IntelliJ IDEA の標準的な手段を使用しても、役に立ちませんでした...

だから、友達、私は混乱しています。誰かが助けてくれれば、とても感謝しています。

プログラムのテキストは次のとおりです。

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;
}
4

0 に答える 0