JavaFX集成Gmail API出现sun/misc/ServiceConfigurationError缺失错误求助
Gmail API在JDK21+JavaFX项目中的NoClassDefFoundError解决方案
错误原因分析
sun.misc.ServiceConfigurationError类在JDK9及以上版本已被移除,替换为java.util.ServiceConfigurationError,但你使用的老版本Google OAuth Jetty扩展库(1.34.1)仍依赖这个废弃类。- 重复引入的
com.sun.net.httpserver:http依赖与JDK内置的HTTP服务器类冲突,加剧了类加载问题。
具体解决步骤
1. 升级Google OAuth客户端Jetty扩展依赖
修改pom.xml中的google-oauth-client-jetty版本,与google-api-client版本保持一致(2.0.0):
<dependency> <groupId>com.google.oauth-client</groupId> <artifactId>google-oauth-client-jetty</artifactId> <version>2.0.0</version> </dependency>
2. 删除多余的HTTP服务器依赖
移除pom.xml中重复的以下依赖项:
<dependency> <groupId>com.sun.net.httpserver</groupId> <artifactId>http</artifactId> <version>20070405</version> </dependency>
JDK 1.6及以上版本已内置com.sun.net.httpserver相关类,无需额外引入。
3. 修正module-info.java配置
添加JDK HTTP服务器模块的依赖声明,同时清理重复的模块依赖:
module com.omega.omegapeoject1 { requires javafx.controls; requires javafx.fxml; requires java.sql; requires javafx.web; requires java.desktop; requires javafx.media; // 保留一个即可,移除重复的google.api.client requires com.google.api.client; requires com.google.api.client.json.gson; requires com.google.api.services.gmail; requires com.google.api.client.auth; requires com.google.api.client.extensions.java6.auth; requires com.google.api.client.extensions.jetty.auth; requires org.apache.commons.codec; requires jdk.unsupported; requires mail; // 添加JDK内置HTTP服务器模块依赖 requires jdk.httpserver; opens com.omega.omegapeoject1 to javafx.fxml; exports com.omega.omegapeoject1; exports com.omega.omegapeoject1.Controllers; opens com.omega.omegapeoject1.Controllers to javafx.fxml; opens com.omega.omegapeoject1.models to javafx.base; opens com.omega.omegapeoject1.models.database to javafx.base; }
4. 重新构建项目
执行mvn clean install清理并重新构建项目,确保依赖更新生效。
内容的提问来源于stack exchange,提问作者omega
相关产品推荐
相关产品推荐

