Android上的Spring OAuth2异常:在路径上找不到类“javax.xml.transform.stax.StAXSource”:DexPathList

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android上的Spring OAuth2异常:在路径上找不到类“javax.xml.transform.stax.StAXSource”:DexPathList相关的知识,希望对你有一定的参考价值。

我尝试使用spring的OAuth2依赖项为服务器创建一个android客户端。问题是当我调用这个构造函数时:

OAuth2RestTemplate oAuthRestTemplate = new Auth2RestTemplate(resourceDetails);

我得到这个例外:

Didn't find class "javax.xml.transform.stax.StAXSource" on path: DexPathList

我使用的是使用gradle的Android Studio,我包含OAuth2依赖项,如下所示:

dependencies {
    implementation 'org.springframework.security.oauth:spring-security-oauth2:2.3.0.RC1'
    ...
}

similar question中,接受的答案建议包括Spring rest-template依赖(compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'),但是当我这样做时,我得到另一个错误,我也发布了here

我认为不应该包含Spring rest-template依赖项,因为它可能已经被Spring OAuth依赖项导入了。这是真的吗?如果是,我怎么能解决另一个类(javax.xml.transform.stax.StAXSource)无法找到的事实呢?我认为无法找到这个类的原因是因为我在android上使用自己的JDK实现,正如this answer所说。

如果有人能帮我解决这个问题,那将非常感激。

答案

似乎需要其他依赖项(spring-android-rest-template依赖项),我不得不放置它们并且还排除重复的模块。我是这样做的:

compile('org.springframework.android:spring-android-rest-template:2.0.0.M3') {
    exclude module: 'spring-android-core'
}

compile('org.springframework.security.oauth:spring-security-oauth2:2.3.0.RC1'){
    exclude module: 'spring-web'
}

以上是关于Android上的Spring OAuth2异常:在路径上找不到类“javax.xml.transform.stax.StAXSource”:DexPathList的主要内容,如果未能解决你的问题,请参考以下文章

Spring Oauth2 - 自定义异常处理程序

如何绕过 Grails 异常处理以使用 Spring Oauth2?

Spring Cloud:Security OAuth2 自定义异常响应

Spring Cloud:Security OAuth2 自定义异常响应

Spring Boot Security OAuth2 自定义异常消息

没有客户端身份验证。尝试添加适当的身份验证过滤器异常 spring oauth2