【问题标题】:Upgraded my webapplication to use OJDBC8.jar. but Websphere8.5 refers to old version ojdbc6 and returns nosuchmethoderror升级了我的 Web 应用程序以使用 OJDBC8.jar。但 Websphere 8.5 引用旧版本 ojdbc6 并返回 nosuchmethoderror
【发布时间】:2021-06-16 03:40:06
【问题描述】:

错误 500: java.lang.NoSuchMethodError: oracle/jdbc/OracleConnection.createOracleArray(Ljava/lang/String;Ljava/lang/Object;)Ljava/sql/Array; (由 com.ibm.ws.bootstrap.ExtClassLoader@96620801 从文件:/sysap/oracle/instantclient_11_2/ojdbc6.jar 加载)从类 com.model.dao.TypeKeysDAO 调用(从文件:/opt/WebSphere/8_5/ 加载) AppServerBase1/profiles/AppServerBase1/installedApps/System_Cell/MyEnterprise.ear/MyEnterpriseWeb.war/WEB-INF/classes/ by com.ibm.ws.classloader.CompoundClassLoader@3edbaa21

【问题讨论】:

    标签: websphere nosuchmethoderror ojdbc


    【解决方案1】:

    JDBC jar 的旧副本似乎与您的配置中定义的 JDBC 提供程序相关联。错误消息表明该类是由 WebSphere 的 ExtClassLoader 加载的,它是包含 JDBC 驱动程序类路径的加载器。您需要删除旧的 JDBC 提供程序,更新其类路径,或使其成为“隔离”资源提供程序(这为它提供了一个必须与应用程序显式关联的单独的类加载器),以便将其从查看您的应用程序。

    如果出于某种技术原因您需要在资源提供程序类路径中使用 ojdbc6.jar,但需要仅在应用程序中引用 ojdbc8.jar(而不是通过服务器配置的数据源),那么您需要做一些类加载程序配置向导使其工作。最可靠的解决方案是创建一个包含新 jar 的共享库,将其设置为使用隔离的类加载器,并将其与您的 EAR 或 WAR 关联。

    【讨论】:

      【解决方案2】:

      ojdbc6.jar 肯定在应用程序的类路径中。要定位它的加载位置,您可以登录到 WebSphere Application 服务器控制台 (https://localhost:<admin-port>/ibm/console) 并检查应用程序的类加载详细信息。 这将显示为您的应用程序加载的类/jar 列表。从列表中找到 ojdbc6.jar 并查看它的路径。

      您要么将ojdbc6.jar 添加为共享库,要么与您的应用程序(WEB-INF/lib 目录)捆绑在一起,或者在服务器本身的类加载器中提及它。

      【讨论】:

        【解决方案3】:

        file:/sysap/oracle/instantclient_11_2/ojdbc6.jar 这是 EAR 引用的共享库。我已经在这个位置添加了 ojdbc8.jar,现在问题已经解决了。

        【讨论】:

          猜你喜欢
          • 2018-07-28
          • 2021-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-07
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多