JDK 7u65/8u11以降に存在するバイトコード検証の不具合
JDK 7u65/8u11以降にはバイトコード検証の不具合 JDK-8051012 があります。Groovyでは、 GROOVY-6951 で報告されているように、コンストラクタ内でsuper()
やthis()
を使うと実行時エラーが発生します。
Gradle SSH Pluginでもコンストラクタ内でsuper()
を実行するコードがあり、JDK 7u65/8u11以降で正常に動作しない問題があります。最近のJDKで不具合が修正されているか確認してみたのですが、やはり動作しませんでした。結果は以下の通りです。
- 成功 7u60-b19
- 失敗 7u65-b17
- 失敗 7u67-b01
- 成功 8u5-b13
- 失敗 8u11-b12
- 失敗 8u20-b26
残念ながら、GROOVY-6951 のスレッドによると8u40まで待つしかないようです。
なお、Travis CIでは当該の不具合に対する暫定対処が行われており、.travis.yml
でoraclejdk7
/oraclejdk8
を指定した場合は7u60/8u5が選択されるようになっています。