运行JUnit5测试的Eclipse抛出java.lang.SecurityException:类“ org.hamcrest.Matchers”

时间:2019-02-05 18:03:25

标签: eclipse junit5

我在maven项目中有一个简单的JUnit项目。

当我进行此简单测试时:

import java.util.Arrays;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;

import org.junit.jupiter.api.Test;

import lombok.val;

class MyTest {

    @Test
    void test() {
        val list = Arrays.asList(2, 3, 6, 8, 5);
        val expected = Arrays.asList(5, 6);
        assertThat(list, containsInAnyOrder(expected));
    }

}

然后我将Junit5库添加到构建路径中,出现此错误:

java.lang.SecurityException: class "org.hamcrest.Matchers"'s signer information does not match signer information of other classes in the same package

我发现发生了这种情况,因为我使用hamcrest-2.1.jar作为依赖项,而Eclipse在JUnit5库中使用了1.3.0v20180420-1519.jar版本。

有什么办法可以解决此问题,因为只有在需要使用org.hamcrest.Matchers类中存在的方法时,我才遇到问题。 org.hamcrest.CoreMatchers中存在的文件没有任何问题。

我正在使用日食 版本:2018-12(4.10.0) 适用于企业Java开发人员的Eclipse IDE。 版本号:20181214-0600

谢谢

1 个答案:

答案 0 :(得分:0)

感谢https://code.google.com/archive/p/hamcrest/issues/128,此问题已得到解决。只需将mp hamcrest-core 1.3替换为.p2版本的hamcrest jar。