Multiple Hamcrest versions?

I am using the following:

  • junit4.7.jar
  • hamcrest-all-1.2.jar

When the test failed I got the following exception:

   1: java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/DescriptionV
   2:     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
   3:     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
   4:     at ms.EnumExample.saveEnum(EnumExample.java:19)
   5:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   6:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   7:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   8:     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
   9:     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
  10:     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
  11:     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
  12:     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
  13:     at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
  14:     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
  15:     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  16:     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
  17:     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
  18:     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
  19:     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
  20:     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
  21:     at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
  22:     at com.intellij.rt.junit4.Junit4TestMethodAdapter.run(Junit4TestMethodAdapter.java:62)
  23:     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
  24:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  25:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  26:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  27:     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

I guess hamcrest ships with JUnit.

One solution is to download junit-dep-4.7.jar and make it part of the project. Then everything works fine!

Another solution that I haven’t tried is to remove hamcrest jar and just rely on junit 4.7, unless of course you need something specific from the version of hamcrest.

 

What did you think of this article?




Trackbacks
  • No trackbacks exist for this post.
Comments

Leave a comment

Submitted comments are subject to moderation before being displayed.

 Enter the above security code (required)

 Name (required)

 Email (will not be published) (required)

 Website

Your comment is 0 characters limited to 3000 characters.