You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决java.util.Collections$SingletonList无法转换为java.lang.String的异常?

问题描述

我已将微软Partner Center Java示例项目克隆到本地Eclipse中,运行partnerconsent项目时出现类型转换异常:

class java.util.Collections$SingletonList cannot be cast to class java.lang.String (java.util.Collections$SingletonList and java.lang.String are in module java.base of loader 'bootstrap')

对应的堆栈跟踪信息:

java.lang.ClassCastException: class java.util.Collections$SingletonList cannot be cast to class java.lang.String (java.util.Collections$SingletonList and java.lang.String are in module java.base of loader 'bootstrap')
    at com.nimbusds.oauth2.sdk.util.URLUtils.serializeParameters(URLUtils.java:103)
    at com.microsoft.aad.adal4j.AdalTokenRequest.toOAuthRequest(AdalTokenRequest.java:160)
    at com.microsoft.aad.adal4j.AdalTokenRequest.executeOAuthRequestAndProcessResponse(AdalTokenRequest.java:86)
    at com.microsoft.aad.adal4j.AuthenticationContext.acquireTokenCommon(AuthenticationContext.java:930)
    at com.microsoft.aad.adal4j.AcquireTokenCallable.execute(AcquireTokenCallable.java:70)
    at com.microsoft.aad.adal4j.AcquireTokenCallable.execute(AcquireTokenCallable.java:38)
    at com.microsoft.aad.adal4j.AdalCallable.call(AdalCallable.java:47)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
解决方法

这个异常的核心原因是OAuth请求参数序列化时,将SingletonList类型对象强行转换为String,结合项目场景和堆栈信息,主要排查以下几点:

  • 检查权限范围(scope)参数传递:
    项目中调用ADAL4J的acquireToken系列方法时,若将scope参数包装成了List(比如Collections.singletonList("xxx")),而当前版本的ADAL4J要求直接传入String类型(多scope用空格分隔),就会触发这个转换错误。把List类型的scope改成直接传字符串即可。

  • 升级ADAL4J依赖版本:
    部分旧版本的ADAL4J与Nimbus OAuth SDK存在兼容性问题,导致参数处理逻辑异常。尝试将ADAL4J依赖升级到最新稳定版,修复此类类型转换的bug。

内容的提问来源于stack exchange,提问作者ab.it.gcp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:39:24