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

Windows10下AuthorizationCodeInstalledApp OAuth2认证报错求助

解决Windows10下Google OAuth2认证的NoClassDefFoundError问题

问题原因分析

你遇到的java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest报错,核心原因是本地OAuth2授权流程中用到的LocalServerReceiver类依赖Servlet API,但你的Windows10运行环境的classpath里缺少这个依赖。

为什么Windows7能正常运行?大概率是Win7环境的JDK或项目依赖中恰好包含了Servlet API的相关jar包;而Win10环境里没有。另外,用Win7生成的凭据能正常运行,是因为此时不需要走首次授权的流程(不需要启动本地服务器接收OAuth回调),也就不会触发调用LocalServerReceiver的代码路径,所以避开了这个依赖问题。


具体解决步骤

1. 确保引入完整的Google API Client Jetty扩展依赖

LocalServerReceiver属于google-api-client-jetty模块,如果你用Maven管理依赖,需要在pom.xml中添加:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client-jetty</artifactId>
    <version>1.34.1</version> <!-- 替换成你使用的对应版本 -->
</dependency>

如果是手动管理jar包,需要下载google-api-client-jetty-x.x.x.jar以及它依赖的Servlet API相关jar包(比如javax.servlet-api-x.x.x.jar),并添加到项目的classpath中。

2. 检查JDK版本与依赖兼容性

如果你使用的是Java 9及以上版本,由于模块化系统的限制,javax.servlet模块默认不在classpath中。这种情况下,你需要在启动参数中添加:

--add-modules java.servlet

或者确保你的依赖中包含模块化的Servlet API包。

3. 验证依赖完整性

可以通过查看项目的依赖树(Maven用mvn dependency:tree),确认javax.servlet-api是否被正确引入,并且没有被排除。


额外验证

添加依赖后,重新运行首次授权流程,此时LocalServerReceiver应该能正常加载HttpServletRequest类,完成OAuth2认证并生成新的凭据,之后Windows10环境就能正常运行了。

内容的提问来源于stack exchange,提问作者Petr Nekolný

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:15:08