java.lang.LinkageError:ClassCastException:尝试强制转换jar

问题描述 投票:0回答:1

我正在编写 JAX-RS API。

尝试运行以下单元测试时:

    @Test
    public void verifyUserTest() throws InvalidTokenException, InvalidUserException {
        Mockito.when(service.verifyLogin(Mockito.any(LoginRequestDTO.class))).thenReturn(true);
        Mockito.when(service.createToken(Mockito.any(String.class))).thenReturn("testToken");



        var res = sut.verifyUser(new LoginRequestDTO("testuser", "testpass"));
        var entity = res.getEntity();
        System.out.println(entity);

       // Assertions.assertEquals("testuser", res.getUsername());
      //  Assertions.assertEquals("testToken", res.getToken());

    }

我收到以下错误:

java.lang.LinkageError: ClassCastException: attempting to castjar:file:/C:/Users/User/.m2/repository/javax/javaee-web-api/8.0.1/javaee-web-api-8.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Users/User/.m2/repository/javax/javaee-web-api/8.0.1/javaee-web-api-8.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class

(对我来说)这看起来就像同一个类被加载了两次。我该如何解决这个问题?谢谢。

java junit jersey jax-rs
1个回答
9
投票

我通过更改 pom.xml 中的依赖项解决了这个问题。

我两个都有

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>3.0.2</version>
</dependency>

  <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>

这种依赖组合导致了类转换错误。将 jersey-client 依赖项的版本更改为“2.34”已解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.