微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

升级我的 web 应用程序以使用 OJDBC8.jar但 Websphere8.5 指的是旧版本 ojdbc6 并返回 nosuchmethoderror

如何解决升级我的 web 应用程序以使用 OJDBC8.jar但 Websphere8.5 指的是旧版本 ojdbc6 并返回 nosuchmethoderror

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

解决方法

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

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

,

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

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

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。