Java11迁移至17、Spring Boot3.0/Spring Web6时配置绑定失败求助
Java 11 迁移至 Java 17 + Spring Boot 3.0 启动异常解决
问题现象
应用启动失败,核心报错:
无法将
spring.datasource.oracleucp.ssl-context.provider属性绑定到java.security.Provider
原因:java.lang.NoSuchMethodException: java.security.Provider.<init>()
问题根因
Java 17 移除了java.security.Provider的无参构造方法,而 Spring Boot 3.0 的配置属性绑定逻辑会尝试通过无参构造实例化该类,导致绑定失败;同时 Spring Boot 3.0 对 Oracle UCP 数据源的配置属性绑定规则做了调整,原配置方式不再兼容。
解决方案
修改应用配置,替换原spring.datasource.oracleucp.ssl-context.provider配置:
- 通过
spring.datasource.oracleucp.connection-properties传递 SSL 相关 JDBC 属性,示例:spring.datasource.oracleucp.connection-properties=javax.net.ssl.SSLContextProvider=com.sun.net.ssl.internal.ssl.Provider - 若需指定 SSL 上下文实现,直接配置对应上下文类名到适配的属性项,避免直接绑定
java.security.Provider类型。
内容的提问来源于stack exchange,提问作者AnilkumarReddy
相关产品推荐
相关产品推荐

