kyukyunyorituryo / AozoraEpub3

青空文庫テキスト→ePub3変換
http://www18.atwiki.jp/hmdev/
Other
137 stars 15 forks source link

Java Error with narou.rb #13

Open Grinchii opened 7 months ago

Grinchii commented 7 months ago

Hello,

first, sorry for writing in English! I can read Japanese perfectly fine, but it's still difficult for me to write more complex stuff.

I'm using narou.rb on Ubuntu with 改造版AozoraEpub3 and it works great. But I always get a Java Error if I try to convert 槍使いと、黒猫。 or マギクラフト・マイスター into an epub. Those are both really long books, but other, even longer books like "レジェンド" are converting perfectly fine.

First I thought this could be a problem with narou.rb, but using an older 改造版AozoraEpub3 (From 2022) at least "槍使いと、黒猫。" converts perfectly fine. "マギクラフト・マイスター" still won't work on any Version I tried so.

Using OpenJDK 21. Also tried it with older Java Versions, but it won't change anything.

> [ERROR] ブラウザが見つかりませんでした
> ID:80 マギクラフト・マイスター の変換を開始
> 小説状態の調査結果を 調査ログ.txt に出力しました(エラー:0件、警告:8件、INFO:3件)
> 縦書用の変換が終了しました
> AozoraEpub3でEPUBに変換しています....................
> --------
> Detected encoding = UTF-8
> 変換開始 : /media/windowsshare/小説データ/小説家になろう/n7648bn マギクラフト・マイスター/[秋ぎつね] マギクラフト・マイスター.txt
> [INFO] 注記未変換 (20) : [#ここから柱]
> [INFO] 注記未変換 (20) : [#ここで柱終わり]
> 
> ........ shorten .....
> 
> [INFO] 注記未変換 (469969) : [#ここから後書き]
> [INFO] 注記未変換 (469973) : [#ここで後書き終わり]
> [INFO] 注記未変換 (470227) : [#ここから後書き]
> [INFO] 注記未変換 (470231) : [#ここで後書き終わり]
> [INFO] 注記未変換 (470401) : [#ここから後書き]
> [INFO] 注記未変換 (470405) : [#ここで後書き終わり]
> SLF4J: No SLF4J providers were found.
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
> java.io.IOException: This archive contains unclosed entries.
> at org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.finish(ZipArchiveOutputStream.java:1019)
> at org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.close(ZipArchiveOutputStream.java:633)
> at com.github.hmdev.writer.Epub3Writer.write(Epub3Writer.java:932)
> at AozoraEpub3.convertFile(AozoraEpub3.java:524)
> at AozoraEpub3.main(AozoraEpub3.java:443)
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
> at java.desktop/java.awt.image.DataBufferByte.(DataBufferByte.java:77)
> at java.desktop/java.awt.image.Raster.createInterleavedRaster(Raster.java:310)
> at java.desktop/java.awt.image.BufferedImage.(BufferedImage.java:376)
> at com.github.hmdev.image.ImageUtils.writeImage(ImageUtils.java:203)
> at com.github.hmdev.writer.Epub3Writer.writeImage(Epub3Writer.java:996)
> at com.github.hmdev.writer.Epub3Writer.write(Epub3Writer.java:873)
> at AozoraEpub3.convertFile(AozoraEpub3.java:524)
> at AozoraEpub3.main(AozoraEpub3.java:443)
> pid 976 exit 1
> [ERROR] JavaがインストールされていないかAozoraEpub3実行時にエラーが発生しました。EPUBを作成出来ませんでした
kyukyunyorituryo commented 7 months ago

大きい画像ファイルを開いたときにメモリ不足で止まっているようです。メモリ容量の制限があるJavaを利用しているか、Javaのメモリ割り当てが少なくなっているか、または使っているパソコンのメモリが少ないなどが考えられる。

 どこのJavaを使っているかメモリ割り当てはいくらか、パソコンのメインメモリ容量などがわからないと何とも言えません。

https://qiita.com/niwasawa/items/a9d0a34183dad738e80b

https://stackoverflow.com/questions/28272923/what-is-the-default-max-heap-size-xmx-in-java-8

Grinchii commented 7 months ago

Thank you!

It really was the ram. With set to 16gb (VM) even "マギクラフト・マイスター" gets converted just fine. Tried it with 8gb before but it didn't work. So it seems like you really need 16gb+ to convert "マギクラフト・マイスター"without Problems.

Didn't thought that it would need that much ram to convert this.

kyukyunyorituryo commented 7 months ago

テキストと画像なので軽い処理と考えてあまりメモリの管理はしっかりしたものになっていない。なのでメモリリークが起こって必要以上にメモリを消費している可能性がある。予想以上に過酷な使われ方をしているのでちゃんとしたメモリの管理が必要なのかもしれない。