我在连接 db2 数据库的 websphere 控制台上部署了一个应用程序。安装的 jdk 是 IBM JDK。从在线屏幕运行特定案例时,会弹出一个错误:
UnsupportedEncodingException . ERRCODE = -4220
在检查日志时,以下错误似乎是根本原因。
Caused by: java.io.UnsupportedEncodingException: Cp037
at sun.io.Converters.getConverterClass(Converters.java:319)
at sun.io.Converters.newConverter(Converters.java:373)
at sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:98)
at com.ibm.db2.jcc.am.r.<init>(r.java:10)
分析:看起来像 IBM db2 驱动程序 -db2jcc4.jar
调用底层 JDK 的特定字符编码/解码 jar(我相信charsets.jar)来传递缓冲区流,然后该 jar 将使用该缓冲区并解码为字符串格式。
但正如上面的日志所暗示的,被调用的库是 oracle jdk 的。该类ByteToCharConverter
位于 oracle jdk 库的 rt.jar 中。我们正在使用嵌入在 IBM 的 websphere 服务器安装中的 IBM jdk。此外,OS 上的 JAVA_HOME 路径仅针对 IBM JDK 设置,在 websphere console 中,在环境变量下,JAVA_HOME 设置为 IBM JDK 在 websphere 服务器中的根路径。
我是否需要在 websphere 控制台中设置任何特定参数,以告知编码应该如何发生。?不知道如何度过这个难关。任何帮助表示赞赏。
编辑:
db2jcc 版本
IBM Data Server Driver for JDBC and SQLJ 4.18.60
java版本
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 8.0.6.26 - pxa6480sr6fp26-20210216_01(SR6 FP26))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210216_465732 (JIT enabled, AOT enabled)
OpenJ9 - e5f4f96
OMR - 999051a
IBM - 358762e)
JCL - 20210108_01 based on Oracle jdk8u281-b09