【问题标题】:Eclipse running JUnit5 tests throw java.lang.SecurityException: class "org.hamcrest.Matchers"运行 JUnit5 测试的 Eclipse 抛出 java.lang.SecurityException: class "org.hamcrest.Matchers"
【发布时间】:2019-06-29 15:06:55
【问题描述】:

我在一个 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

谢谢

【问题讨论】:

  • 从我刚刚发现的情况来看,.p2 里面的jar 是由eclipse 安装并签名的。但是maven下载的jar没有签名。我认为这是问题所在,但我不知道如何解决。

标签: eclipse junit5


【解决方案1】:

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

【讨论】:

  • 你怎么能这样做?我有同样的问题。
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
  • 2013-10-02
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多