Ojdbc8 jars 升级到 21.1.0.0 抛出 Nosuchmethod 异常 UCPservletContextListener init

Posted

技术标签:

【中文标题】Ojdbc8 jars 升级到 21.1.0.0 抛出 Nosuchmethod 异常 UCPservletContextListener init【英文标题】:Ojdbc8 jars upgrade to 21.1.0.0 throws Nosuchmethod exception UCPservletContextListener init 【发布时间】:2021-09-02 11:18:19 【问题描述】:

Ojdbc8、ons、ucp jars升级到21.1.0.0版本。当尝试在 tomcat 服务器上启动应用程序时,它会抛出 Nosuchmethod 异常。登录 Tomcat 的 localhost.log 文件。应用程序在启动过程中尝试建立数据库连接。

01-Jun-2021 15:59:56.641 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log 在类路径上检测到 3 个 Spring WebApplication Initializers 2021 年 6 月 1 日 16:00:05.365 信息 localhost-startStop-1 org.apache.catalina.core.ApplicationContext.log 初始化 Spring 嵌入式 WebApplicationContext 2021 年 6 月 1 日 16:00:19.397 严重 localhost-startStop-1 org.apache.catalina.core.StandardContext.listenerStart 配置类 [oracle.ucp.jdbc.UCPServletContextListener] 的应用程序侦听器时出错 java.lang.NoSuchMethodException: oracle.ucp.jdbc.UCPServletContextListener.init 在 java.lang.class.getConstructor(Unknown Source)

【问题讨论】:

【参考方案1】:

这是 21.1 中 ucp.jar 的一个已知问题。它将在 21.3 发布时修复。同时,您可以从 ucp.jar 中删除该类:

  oracle/ucp/jdbc/UCPServletContextListener.class

【讨论】:

非常感谢您提供的信息。请问删除该课程是否会影响任何事情? 这是 21c 中引入的一项新功能,用于使用 Servlet 上下文侦听器自动启动 UCP。它适用于 JBoss,但不适用于 Tomcat。如果使用 Tomcat,您可以安全地删除它。不会有任何影响。 那太好了。再次感谢?【参考方案2】:

根据我的经验,如果您将 jdbc/ucp jar 放入 Tomcat 的 lib(推荐用于生产系统)并在 Maven 中为它们设置 provided 范围,问题就会消失。

另一种选择是在 web.xml 中设置metadata-complete="true"(阅读更多here 和here)

【讨论】:

【参考方案3】:

如果你使用的是spring boot,那么你可以使用

   <dependency>
      <groupId>com.oracle.ojdbc</groupId>
      <artifactId>ojdbc8</artifactId>    
      <version>19.3.0.0</version>      
  </dependency>

这个依赖或者更新你的maven项目。

【讨论】:

我有一个使用 v21 驱动程序的 Spring Boot 项目,我没有问题中的错误。使用 Spring Boot 你甚至可以省略 &lt;version&gt;,它将从父 Spring Boot pom 获取

以上是关于Ojdbc8 jars 升级到 21.1.0.0 抛出 Nosuchmethod 异常 UCPservletContextListener init的主要内容,如果未能解决你的问题,请参考以下文章

将 ojdbc8.jar 添加到 Eclipse/maven 项目的正确方法

maven如何将架包安装到本地仓库

XXL-JOB初体验-ORACLE版(转)

Flinkx-web安装

在查询 Oracle 的错误时,是不是有任何避免 Stream 的解决方法已经关闭?

logstash从oracle12c导入数据到elasticsearch