同人誌アフィサイトの自動更新用バッチ関連の各種処理をJava 8からJava 12に切り替え。
概ね問題無いが、2点。
1.ActiveMQを使ったプログラム起動時に以下の警告メッセージを出す。今は実際はJMSではなくてRESTで通信しているので動く事は動くんだが。
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/略/activemq-all-5.15.9.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Probably the solution is something along the lines of ensure "that your module uses the javax.xml.bind:jaxb-api:2.3.0
instead of com/sun/xml/bind/jaxb-impl/2.0/jaxb-impl-2.0.jar" from https://stackoverflow.com/questions/46474104/illegal-reflective-access-in-an-applet-with-jaxb-and-jdk-9
確かに、jarはそっちを使っていたので切り替えた
<dependency org="javax.xml.bind" name="jaxb-api" rev="2.3.1"/>
<!-- <dependency org="com.sun.xml.bind" name="jaxb-impl" rev="latest.integration"/> -->
コンパイルは通ったが、やはり治らず。

2.一部のプログラムのログ中の日本語が文字化けする。
こっちはまぁ、殆どのプログラムのログは文字化けしないので調べればすぐわかるだろう。
→これは、何とソースをUTF-8でコンパイルしていた。EclipseはそのままだとWindowsマシンで起動しても何故かファイルをUTF-8で開くからプロジェクト毎に設定しないといけない。ちなみに新規作成時のデフォルトはMS932。どっちかに統一しろよ。

それにしてもJava 9~の高速リリースモデルは、ターミナルリリースが判らんので乗り換えるタイミングに困るね。ロングタイムサポートはターミナルリリースとは別だし。
しかも9以降、何か素晴らしい機能でも付いたかというと特に無く、Apache Commonsがやってたようなユーティリティメソッドが増えるばかりで。寧ろ消える機能の影響がデカい。私のだとJAXBでごらんの有様だし。
高速リリースは嘗てあれほど有力だったFirefoxが凋落した悪手でもある。

Effective Java 第3版
Effective Java 第3版
posted with amazlet at 19.04.13
Joshua Bloch
丸善出版
売り上げランキング: 12,572