ビルドは通っているのに、いざ実行したら「java.lang.VerifyError」が発生して停まってしまう場合について。
スポンサーリンク
jarライブラリでAndroidには存在しないクラスが使用されていた
今回の原因としては、取り込んでいたjarファイル内で使用されていたクラスが、Androidでは存在しないものだったためにそこでこのエラーが発生していました。
jarファイルはAndroid向けのものではなかったのでそういうことは起こりえるのですが、NoClassDefFoundErrorではなくVerifyErrorだったのですぐに原因に気づけませんでした。
対処法としては…そのクラスが使えるようにするか、そのクラスやjarライブラリを使わないようにするか、しかないです…
AndroidではSDKバージョンを変えるときに発生しやすい
Androidに絞って検索してみると、SDKバージョンの違いで発生することが多いようです。
新しいバージョンのSDKでは廃止されてしまったクラスを使用したり、その逆で新しいバージョンのSDKから追加されたクラスを使用してコンパイルしたりしたものを使用した場合に発生しているようです。
根源的にはクラスがみつからないわけなので、このような現象も納得できます。
またビルド時にリンクするライブラリが足りない(けれど、それを使用しているのは組み込まれている別のライブラリなどでビルドは通ってしまう)場合なども発生するよう。いろいろと厄介ですね…
VerifyErrrorそのものはJava一般の話ではあるのですが、Androidのそれだと上記のような現象のほうが引っかかってきてしまって気付き難かったので残しておきます。