Spotbugsのビルドを弄ろうとしていて気になったので調べてみた。 以下のように、--releaseと-source/-target を使った時で挙動が違う。 まずはじめにSpotbugsの話になるが、Spotbugsにはツールの特性上、テストケースとしてJavaファイルを中に溜め込んでいる。 また、その中には削除されてしまった標準ライブラリのAPIに関するテストケースがあり 古いJavaでビルドする必要のあるファイルもある。 その中で今回あったのが以下のようなクラスだ。 class RunFinalizersOnExit { int f() { System.runFinalizersOnExit(true); return 42; } } System#runFinalizersOnExit は Java11で削除されたメソッドだ。 そのため、このクラスはJava8の標準ライブラリが