1

重複投稿はしていないようですので、詳細はこちら…

Eclipse コンソールで XOM (XML オブジェクト モデル、Java ライブラリ) の非静的メソッド Builder.build() を使用してドキュメントを解析すると、次のようになります。

[Fatal Error] :1:1: Premature end of file.

これは、プログラムの動作を強制的に停止させる重大な問題です。

私が使用しているメソッドの内容は次のとおりです...

public boolean buildDocument() {

    boolean out = true;
    Builder b = null;
    b = new Builder();

    String xml = "";
    String newXml = "";
    StringBuilder xmlSb = new StringBuilder();
    URL xmlUrl = null;
    try {
        xmlUrl = new URL(this.packAddr);
    } catch (MalformedURLException e1) {
        Pcdl.log.severe(e1.getMessage());
        out = false;
    }

    InputStream is;
    try {

        is = xmlUrl.openStream();
        while (is.available() > 0) {
            xmlSb.append(is.read());
        }

    } catch (IOException e1) {
        e1.printStackTrace();
        Pcdl.log.severe(e1.getMessage());
        out = false;
    }

    xml = xmlSb.toString();

    // Add more lines if needed.  I hope that nobody actually had to use any XML entities.
    newXml = Util.removeUTF8BOM(xml)
            .replace("&", "&")
            ;

    Pcdl.log.info("XML Data Size: " + newXml.length() + " B.");
    System.out.println(newXml);

    // Actually build it.
    try {
        this.doc = b.build(new ByteArrayInputStream(newXml.getBytes("UTF-8")));
    } catch (ParsingException | IOException e) {
        Pcdl.log.severe("Document build error: " + e.getMessage());
        System.out.println(e.getMessage());
        out = false;
    }

    System.out.println(this.doc);
    return out;

}

プログラム全体を GitHub リポジトリ " http://github.com/Treyzania/PraseocraftDL/ " に置いています。何らかの方法でこのプロジェクトに貢献したい場合は、ぜひお寄せください。フォークを作るだけで、何が入っているかがわかります。

このメソッドは「com.treyzania.praseocraft.ftb.downloader.PackFile」からのものです。パッケージ名が非常に長いことはわかっていますが、今すぐ変更するには遅すぎます。私が取り組んでいるプロジェクトは、XML ドキュメント (例: http://pastebin.com/raw.php?i=B42in4c5 ) を取得し、%appdata%/.mc-pcdl で Minecraft modpack にコンパイルするプログラムです。 /packs/ (または同様のもの) に移動し、他のいくつかのファイルを編集して、データを Minecraft ランチャーに適切に登録します。このプロジェクトをできるだけ抽象化しようとしているので、必要以上のクラスがあるように見えるかもしれません。また、これを自分で修正するためにできる限り多くのことを試みています。どれも機能していません。

4

1 に答える 1

0

Treyzania は彼の問題を解決しました。

キャストしなければならなかった

xmlSb.append(is.read());

なので

xmlSb.append((char) is.read());

問題を解決します。ただし、現在は別の方法でファイルをダウンロードしています。プロジェクトのこのセクションには問題はありません。

于 2013-12-20T21:52:44.980 に答える