JDK1.7+Gebが動かない
おしさしぶりです。
早いもので気づいたら3年目になっていました、おしりんです。
ここ3日間くらい、ひっさしぶりにはまりました。
そうです、Gebが動かないんです。
Spockは動くのにGebが動かないんです。
テスト開始してブラウザは立ち上がるものの、すぐに落ちるんです。
そしてひたすらVerifyErrorが出続ける・・
はまりにはまった結果、結局自分では解決できませんでしたが、先輩が解決してくれたのでご共有。
JDK1.7でGebが動かない!って人は参考にしてみてください。
・VerifyErrorがどうにも止まらない環境
Java 1.7
Gradle 2.4
Groovy 2.4.4
これでSpockは動くんです。
EclipseでJUnitから動かしていたので、Eclipseの環境がおかしいのかなと思い、コマンドプロンプトから「gradle test --tests "テスト名"」で動かしても動かないんです。おかしい。
結局、何が原因だったのかっていうとGebを動かす環境のJavaのバージョンでした。
Gebの実行環境のJavaが1.8じゃないとうまく動かない。
(プロジェクトのコンパイラは1.7でおk)
EclipseからJUnitでGebのテストがこけるっていう人はぜひぜひ以下の設定でお試しあれ。
Preferences > Java > InstalledJREs
JDK1.8を追加
Preferences > Java > InstalledJREs > ExecutionEnvironment
JavaSE-1.7←クリック
Compatible JREsでJDK1.8を選択
これで動くはず!
まとめ!
最新(2016年9月)のGebで書いたテストを動かしたい時は、Javaが1.7以下だと動きません。
Javaのバージョンを8にしませう!
とりいそぎそんな感じでした。
以下、見飽きたエラーをぺたっとしておきます。
goとかtoとか遷移しようとすると落ちる。
java.lang.VerifyError: Bad <init> method call from inside of a branch Exception Details: Location: geb/navigator/SearchContextBasedBasicLocator.<init>(Lorg/openqa/selenium/SearchContext;Lgeb/navigator/factory/NavigatorFactory;)V @91: invokespecial Reason: Error exists in the bytecode Bytecode: 0000000: b800 1e4e 05bd 0004 5903 04bd 0004 5903 0000010: 2b53 b800 2453 5904 2c53 5910 ff12 02b8 0000020: 0028 2a5f ab00 0000 0000 005e 0000 0002 0000030: a8a2 5e9a 0000 001c aca6 0f60 0000 003d 0000040: 5f5a 5903 3212 2ab8 002e c000 2a5f 5904 0000050: 3212 30b8 002e c000 305f 57b7 0033 a700 0000060: 2e5f 5a59 0332 1235 b800 2ec0 0035 5f59 0000070: 0432 1230 b800 2ec0 0030 5f57 b700 37a7 0000080: 000d bb00 3959 123b b700 3ebf 57b1 Stackmap Table: full_frame(@64,{UninitializedThis,Object[#53],Object[#48],Object[#68]},{Object[#70],UninitializedThis}) full_frame(@97,{UninitializedThis,Object[#53],Object[#48],Object[#68]},{Object[#70],UninitializedThis}) full_frame(@130,{UninitializedThis,Object[#53],Object[#48],Object[#68]},{Object[#70],UninitializedThis}) full_frame(@140,{Object[#2],Object[#53],Object[#48],Object[#68]},{Object[#70]}) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585) at java.lang.Class.getDeclaredConstructors(Class.java:1906) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:49) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:36) at geb.navigator.factory.BrowserBackedNavigatorFactory.<init>(BrowserBackedNavigatorFactory.groovy:35) at geb.Configuration.createNavigatorFactory(Configuration.groovy:417) at geb.Browser.createNavigatorFactory(Browser.groovy:130) at geb.Browser.getNavigatorFactory(Browser.groovy:118) at geb.Page.init(Page.groovy:131) at geb.Browser.createPage(Browser.groovy:875) at geb.Browser.to(Browser.groovy:556) at geb.Browser.to(Browser.groovy:523) at geb.spock.GebSpec.methodMissing(GebSpec.groovy:56)