升级Oracle 19C报java.lang.NoClassDefFoundError: oracle/ons/ONS错误咨询
问题解决办法
错误原因
报错
java.lang.NoClassDefFoundError: oracle/ons/ONS的核心原因是:Oracle 19c版本的ojdbc8依赖本身不包含ONS(Oracle Notification Service)组件,该组件从12c版本开始已经从ojdbc主包中拆分出来,成为独立的依赖包,你仅替换了ojdbc8但未引入对应版本的ONS依赖,因此运行时找不到相关类。
解决步骤
- 第一步:保留现有ojdbc8依赖,额外添加同版本的ONS依赖,依赖配置如下:
<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ons</artifactId> <version>19.12.0.0</version> </dependency>
如果你实际未使用Oracle RAC的ONS相关功能,也可以通过移除连接配置中所有和ONS、快速应用通知(FAN)相关的参数,避免应用触发ONS类的加载,无需额外引入ONS依赖。
- 第二步:清理旧版本依赖冲突,执行
mvn dependency:tree命令检查项目依赖树,确保旧的com.oracle:ons:11.1.0.7.0依赖已经被完全移除,没有被其他间接依赖引入。如果发现存在多版本ONS共存,需要在对应的依赖中添加排除规则,移除旧版本的ONS包。 - 第三步:验证配置兼容性,如果你的项目使用了Oracle RAC的ONS通知、连接池动态感知等功能,检查原有连接字符串、连接池配置中关于ONS的参数是否适配19c版本,避免配置不兼容导致的二次报错。
内容的提问来源于stack exchange,提问作者techhungry
相关产品推荐
相关产品推荐

