-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows で使っている Java が Adopt Open JDK だと "AozoraEpub3でEPUBに変換" するときにエラーになる #399
Comments
ref #395 :おそらく同じような内容なんだと思います。インストールし直したのかどうかはわかりませんが、 |
参考までに、どのようなエラーとなるのか共有していただくことはできますか? |
Eclipse Adoptium の jre-18.0.1.10-hotspot では再現しました。 おそらく 17 か 18 か、もしくは Transition to Eclipse - An Update | AdoptOpenJDK Blog のときに変更になったのだと思います。 |
私は Scoop で OpenJDK を入れて使っています。 OpenJDK 18 では再現しました。OpenJDK 17 では再現しませんでした。 ちゃんと調べていませんが、「Java 18 でデフォルトcharset が UTF-8 に。Windows環境のアプリ等は確認要」という辺りが原因のような気がします。 |
以下、正しい対処法ではなく「取り敢えず動かす」ための修正です。かなり強引なので、内容が理解できる方のみ参考にして下さい。 lib/novelconverter.rb の168行目を
と変更し、199行目を
と変更すると、OpenJDK 18, 19, 20 でも error なしに変換できるっぽいです。(ただし、この変更をしても202行目の検出が正常に動作するかどうかはわかりません。) なお、136行目の
参考までに、現時点の私の環境は以下の通りです。
|
予想が入っていて、試験もしていませんが、以下のどちらかの方法で直るのではないかと思う。
または
理由
場合によっては2番目の案はさらに修正が必要かもしれない。上記の案では標準出力全体が同じ文字コードである必要があるが、もしも2つの文字コードが混在とかしていたら、行に分割して、行毎に文字コードを推測するといった処理が必要になるかも。 未確認ですが、Java 19 からなら、 ... Windows は使ってないので、上記はすべて机上の推論です ... |
この問題について、「取り敢えず動かす」形に変更した gem を narouq という名称で置いておきます。
|
参考になる方もいると思いますので、2023年12月時点の私の環境を記しておきます。
|
ご存知の方も多いと思いますが、最新の改造版 AozoraEpub3 である 1.1.1b15Q は既に Java 8 では動きません。 Java 8 の active support 期間は2022年3月31日に終了しているので、改造版 AozoraEpub3 が (最新の LTS である) Java 17 に合わせるのは妥当だと思います。(Java 17 の active support 期間は2026年9月30日まで。) 前述してありますが、Java 21 でも動きます。 |
kuboさんが書かれた通り、現行の narou.rb 3.8.2 が Java19で新たに追加された実行パラメータ koboさんの 1 の方法が簡単で良いと思います。sunのパラメータは非公式なものですが既存の動作に悪影響はありません。 修正前 Line 168 in 1b07ae1
下記のように sun. のプレフィックスが付いたもの(非公式)と付いてないもの(公式)を同時に指定してもいいでしょう。 修正案 java_encoding = "-Dfile.encoding=UTF-8" +
" -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8" +
" -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8" この修正を、とりあえず以下の環境で試したらエラーが解消されました。 環境共通 環境1 環境2 環境3 1 の方法だけで十分かもしれませんが、1 と 2 の両方の対応を実装することも考えられます。 ただし、2 の方法は java.exe の時だけ実行するよう条件付けたほうがいいかもしれません。 Line 265 in 4660df5
と、force_encoding をもう一回やっています。これは削除すればいいと思いますが、注意が必要です。 なお、いくつかのJDKで試したところ、 |
このAozoraEpub3のエラーは、narouの最新バージョン(v 3.9)で修正されましたか?混乱しています。また、このコンポーネントはどの程度重要なのでしょうか?私はこのアプリを使っていて問題を感じたことはありません。 |
UbuntuでopenJDK21(openjdk-21-jdk)を使用した場合、解消 |
掲題のとおりです。
この ISSUE は、どちらかというと FAQ 的な内容になっているので、適切な場所があるのであれば、そちらに移動し、Close してください。
利用者側がとれる対処方法
PATH
を適当な値に変更し、java
コマンドが Oracle Java へ向くようにするOracle Java へ向いているかどうかは、CLI からの確認はおそらくできません。環境変数
PATH
を見て、大丈夫そうかどうかを確認するしかないと思います。環境変数 PATH が正しく設定できている例
なぜ Oracle Java 以外がインストールされた状態になってしまったのか
私の場合は、Chocolatey で Java に依存しているものをインストールしているのですが、それらが2017年の Oracle Java の有償化に伴って Adopt へ依存先を変更したためでした。
例えば PlantUML などを使っている場合はなりがちだと想います。
これで、パッケージマネージャ上では Oracle Java への依存がなくなった状態となり、クリーンアップをしたことで、Oracle Java がアンインストールされました。
実行時のエラーと
narou trace
の内容The text was updated successfully, but these errors were encountered: