2017-05-31 4 views
0

私はxmlファイルの読み書きを含むgradleプロジェクトに取り組んでいます。私はXMLStreamWriterを使用してファイルにエスケープされたxmlの非常に長い文字列を書き込もうとしているときに問題を見つけました。この文字列はファイルに書き込むのに30分ほどかかるため、アプリケーションが応答を停止します。私は、メソッドを呼び出すときに問題が発生する:XMLStreamWriter - 長い文字列をxmlライターに書き出す問題

writer.writeAttribute(key, escapedXML) 

奇妙なことは、私は日食とのIntelliJの両方にGradleのプロジェクトをインポートしたということです。この問題は、Eclipseでアプリケーションを実行したときに、gradleを使用して作成した実行可能なjarファイルを実行したときに表示されますが、intellijでプログラムを実行すると問題なくすぐに終了します。私は、build.gradleファイルに含まれる依存関係以外のjarファイルを追加していません。私は2つのIDEの間の依存関係や設定の違いを見つけようとしましたが、何も見つけることができませんでした。また、両方のIDEが同じJREを使用していることを確認しました。また、アプリケーションに割り当てられるメモリを増やしてjarファイルを実行しようとしましたが、これは役に立ちませんでした。私は明らかな何かを見逃していると確信して、私は本当にいくつかの助けに感謝します。あなたが私に何が欠けているか教えていただけたら教えてください。

更新日:運がなくてもこれを調べるのに数日を要しました。私は実行可能なjarファイルを作成するためにintellijを使用しましたが、問題はそれにも存在していました。 eclipseとintellijで実行しているときに、アプリケーションのクラスパスも調べました。このパスには、intellijで実行しているときにjdk1.8.0_121 \ libのいくつかのjarファイルが含まれていましたが、eclipseで実行しているときは含まれていませんでした。私はintellijクラスパスをコピーし、そのクラスパスを指定してjarファイルを実行しました。まだ運がありません。私はいくつかのアイデアを発するために十分な詳細を提供していることを願っていますどんな提案も大歓迎です。

+0

バッファリングされた書き込みが使用されているはずです。コンソール出力/ロギングは、動作が異なると速度が低下する可能性があります。 Javaのメモリオプション '-Xmx = ... m'が多分です。 –

+0

BufferOutputStreamを使用してXMLStreamWriterを作成します。また、私はメモリオプションを調整するためにVMの引数を変更しようとしましたが、それは助けになりません – DarthRitis

+0

おそらくxalan対XMLのパーサー/ライターのものです。実際のXMLパーサーは、インターフェースとjava SPI(サービス・プロバイダー・インターフェース)を使用して選択されます。そしてその2つは最も顕著です。デバッガまたはjava SPI呼び出しを使用して、異なるXMLライブラリが使用されているかどうかを確認できます。 –

答えて

0

私は問題の原因を考え出しました。どうやら、intellijはXMLStreamWriterのエンコーディングを自動的にUTF-8に設定していましたが、eclipseは自動的にエンコードしていませんでした。私はこの

XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, "UTF-8"); 

にこの

XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream); 

を変更し、私の問題が解決されました。

関連する問題