After developing on an other aspect of a project, I realized later that all my GWT testcases didn’t work anymore. I got the following strange Exception:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | java.lang.NoSuchFieldError: FIREFOX_17 at com.google.gwt.junit.RunStyleHtmlUnit.<clinit>(RunStyleHtmlUnit.java:200) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at com.google.gwt.junit.JUnitShell.createRunStyle(JUnitShell.java:1181) at com.google.gwt.junit.JUnitShell.doStartup(JUnitShell.java:942) at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:982) at com.google.gwt.junit.JUnitShell.getUnitTestShell(JUnitShell.java:698) at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:672) at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:421) at junit.framework.TestCase.runBare(TestCase.java:141) at junit.framework.TestResult$1.protect(TestResult.java:122) at junit.framework.TestResult.runProtected(TestResult.java:142) at junit.framework.TestResult.run(TestResult.java:125) at junit.framework.TestCase.run(TestCase.java:129) at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:247) at junit.framework.TestSuite.runTest(TestSuite.java:255) at junit.framework.TestSuite.run(TestSuite.java:250) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) </clinit> |
The exception also occurred via Maven and not only in IntelliJ, so I knew it has something to do with my Maven-Project.
After checking the dependencies of my project with mvn dependency:tree, I found a new transitive dependency of a new added dependency. Because I didn’t need the htmlunit-part of this component I excluded the htmlunit-dependency with the following directive in my pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <dependencies> .... <dependency> <groupdid>my.dependency <artifactid>mydependency <exclusions> <exclusion> <groupid>net.sourceforge.htmlunit</groupid> <artifactid>htmlunit</artifactid> </exclusion> </exclusions> </artifactid></groupdid></dependency> .... </dependencies> |
A deeper analysis of the problem shows, that the transitive dependency was too new, because the field FIREFOX_17 is not available any more, but the newer one like FIREFOX_38.