我正在编写 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
(对我来说)这看起来就像同一个类被加载了两次。我该如何解决这个问题?谢谢。
我通过更改 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”已解决该问题。